aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--.gitlab-ci.yml76
-rw-r--r--INFO.yaml16
-rw-r--r--README.rst6
-rw-r--r--behave_tests/__init__.py0
-rw-r--r--behave_tests/behavedriver.py70
-rw-r--r--behave_tests/features/__init__.py0
-rw-r--r--behave_tests/features/characterization-full.feature69
-rw-r--r--behave_tests/features/characterization-samples.feature42
-rw-r--r--behave_tests/features/environment.py88
-rw-r--r--behave_tests/features/non-regression.feature45
-rw-r--r--behave_tests/features/quick-test-10kpps.feature13
-rw-r--r--behave_tests/features/steps/__init__.py0
-rw-r--r--behave_tests/features/steps/steps.py629
-rw-r--r--behave_tests/features/steps/testapi.py195
-rw-r--r--docker/Dockerfile48
-rwxr-xr-xdocker/cleanup_generators.py14
-rwxr-xr-xdocker/nfvbench-entrypoint.sh12
-rw-r--r--docs/Makefile231
-rw-r--r--docs/conf.py69
-rw-r--r--docs/conf.yaml3
-rw-r--r--docs/developer/building.rst (renamed from docs/development/building/build.rst)6
-rw-r--r--docs/developer/design/design.rst (renamed from docs/development/design/design.rst)19
-rw-r--r--docs/developer/design/index.rst (renamed from docs/development/design/index.rst)7
-rw-r--r--docs/developer/design/ndrpdr.rst (renamed from docs/development/design/ndrpdr.rst)0
-rw-r--r--docs/developer/design/overview.rst (renamed from docs/development/overview/overview.rst)8
-rw-r--r--docs/developer/design/traffic_desc.rst (renamed from docs/development/design/traffic_desc.rst)1
-rw-r--r--docs/developer/design/versioning.rst (renamed from docs/development/design/versioning.rst)0
-rw-r--r--docs/developer/index.rst (renamed from docs/development/index.rst)9
-rw-r--r--docs/developer/nfvbenchvm.rst365
-rw-r--r--docs/developer/testing-nfvbench.rst91
-rw-r--r--docs/development/building/index.rst14
-rw-r--r--docs/development/overview/index.rst13
-rw-r--r--docs/index.rst12
-rw-r--r--docs/make.bat35
-rw-r--r--docs/release-notes/index.rst (renamed from docs/release/release-notes/index.rst)9
-rw-r--r--docs/release-notes/nfvbench-release-notes.rst (renamed from docs/release/release-notes/release-notes.rst)14
-rw-r--r--docs/release-notes/nfvbenchvm-release-notes.rst94
-rw-r--r--docs/requirements.txt9
-rw-r--r--docs/testing/developer/devguide/index.rst8
-rw-r--r--docs/testing/index.rst11
-rw-r--r--docs/testing/user/configguide/configguide.rst8
-rw-r--r--docs/testing/user/configguide/index.rst9
-rw-r--r--docs/testing/user/userguide/_static/custom.css4
-rw-r--r--docs/testing/user/userguide/_templates/layout.html5
-rw-r--r--docs/testing/user/userguide/advanced.rst352
-rw-r--r--docs/testing/user/userguide/conf.py358
-rw-r--r--docs/user/advanced.rst897
-rw-r--r--docs/user/examples.rst (renamed from docs/testing/user/userguide/examples.rst)0
-rw-r--r--docs/user/extchains.rst (renamed from docs/testing/user/userguide/extchains.rst)0
-rw-r--r--docs/user/faq.rst (renamed from docs/testing/user/userguide/faq.rst)48
-rw-r--r--docs/user/fluentd.rst (renamed from docs/testing/user/userguide/fluentd.rst)1
-rw-r--r--docs/user/hw_requirements.rst (renamed from docs/testing/user/userguide/hw_requirements.rst)3
-rw-r--r--docs/user/images/extchain-config.png (renamed from docs/testing/user/userguide/images/extchain-config.png)bin227354 -> 227354 bytes
-rw-r--r--docs/user/images/nfvbench-all-sriov-pvvp.png (renamed from docs/testing/user/userguide/images/nfvbench-all-sriov-pvvp.png)bin34850 -> 34850 bytes
-rw-r--r--docs/user/images/nfvbench-all-sriov-pvvp2.png (renamed from docs/testing/user/userguide/images/nfvbench-all-sriov-pvvp2.png)bin44379 -> 44379 bytes
-rw-r--r--docs/user/images/nfvbench-ext-multi-vlans.png (renamed from docs/testing/user/userguide/images/nfvbench-ext-multi-vlans.png)bin120315 -> 120315 bytes
-rw-r--r--docs/user/images/nfvbench-ext-shared.png (renamed from docs/testing/user/userguide/images/nfvbench-ext-shared.png)bin100743 -> 100743 bytes
-rw-r--r--docs/user/images/nfvbench-kibana-filter-kql.pngbin0 -> 27039 bytes
-rw-r--r--docs/user/images/nfvbench-kibana-filter.pngbin0 -> 22998 bytes
-rw-r--r--docs/user/images/nfvbench-kibana-gbps-line.pngbin0 -> 61856 bytes
-rw-r--r--docs/user/images/nfvbench-kibana-pps-scatter.pngbin0 -> 56762 bytes
-rw-r--r--docs/user/images/nfvbench-kibana-pps-theoretical.pngbin0 -> 60589 bytes
-rw-r--r--docs/user/images/nfvbench-kibana-zoom-selection.pngbin0 -> 54663 bytes
-rw-r--r--docs/user/images/nfvbench-kibana.pngbin0 -> 23015 bytes
-rw-r--r--docs/user/images/nfvbench-npvp.png (renamed from docs/testing/user/userguide/images/nfvbench-npvp.png)bin30328 -> 30328 bytes
-rw-r--r--docs/user/images/nfvbench-pvp.png (renamed from docs/testing/user/userguide/images/nfvbench-pvp.png)bin20770 -> 20770 bytes
-rw-r--r--docs/user/images/nfvbench-pvpl3.png (renamed from docs/testing/user/userguide/images/nfvbench-pvpl3.png)bin45570 -> 45570 bytes
-rw-r--r--docs/user/images/nfvbench-pvvp.png (renamed from docs/testing/user/userguide/images/nfvbench-pvvp.png)bin31338 -> 31338 bytes
-rw-r--r--docs/user/images/nfvbench-pvvp2.png (renamed from docs/testing/user/userguide/images/nfvbench-pvvp2.png)bin42583 -> 42583 bytes
-rw-r--r--docs/user/images/nfvbench-sriov-pvp.png (renamed from docs/testing/user/userguide/images/nfvbench-sriov-pvp.png)bin19982 -> 19982 bytes
-rw-r--r--docs/user/images/nfvbench-sriov-pvvp.png (renamed from docs/testing/user/userguide/images/nfvbench-sriov-pvvp.png)bin31769 -> 31769 bytes
-rw-r--r--docs/user/images/nfvbench-sriov-pvvp2.png (renamed from docs/testing/user/userguide/images/nfvbench-sriov-pvvp2.png)bin44101 -> 44101 bytes
-rw-r--r--docs/user/images/nfvbench-trex-setup.png (renamed from docs/testing/user/userguide/images/nfvbench-trex-setup.png)bin34090 -> 34090 bytes
-rw-r--r--docs/user/images/nfvbench-xtesting.pngbin0 -> 17342 bytes
-rw-r--r--docs/user/index.rst (renamed from docs/testing/user/userguide/index.rst)7
-rw-r--r--docs/user/installation.rst (renamed from docs/testing/user/userguide/installation.rst)0
-rw-r--r--docs/user/kibana.rst96
-rw-r--r--docs/user/mpls.rst96
-rw-r--r--docs/user/pvpl3.rst (renamed from docs/testing/user/userguide/pvpl3.rst)7
-rw-r--r--docs/user/quickstart_docker.rst (renamed from docs/testing/user/userguide/quickstart_docker.rst)0
-rw-r--r--docs/user/readme.rst (renamed from docs/testing/user/userguide/readme.rst)18
-rw-r--r--docs/user/server.rst (renamed from docs/testing/user/userguide/server.rst)0
-rw-r--r--docs/user/sriov.rst (renamed from docs/testing/user/userguide/sriov.rst)0
-rw-r--r--docs/user/xtesting.rst252
-rw-r--r--kibana/visualizations/export.ndjson25
-rw-r--r--kibana/visualizations/ndr_capacity_gbps_line_chart.json95
-rw-r--r--kibana/visualizations/ndr_capacity_gbps_scatter_plot.json108
-rw-r--r--kibana/visualizations/ndr_capacity_gbps_theoretical_line_chart.json114
-rw-r--r--kibana/visualizations/ndr_capacity_gbps_theoretical_scatter_plot.json128
-rw-r--r--kibana/visualizations/ndr_capacity_pps_line_chart.json98
-rw-r--r--kibana/visualizations/ndr_capacity_pps_scatter_plot.json108
-rw-r--r--kibana/visualizations/ndr_capacity_pps_theoretical_line_chart.json115
-rw-r--r--kibana/visualizations/ndr_capacity_pps_theoretical_scatter_plot.json128
-rw-r--r--[-rwxr-xr-x]nfvbench/cfg.default.yaml354
-rw-r--r--nfvbench/chain_router.py12
-rw-r--r--nfvbench/chain_runner.py53
-rw-r--r--nfvbench/chain_workers.py2
-rw-r--r--nfvbench/chaining.py208
-rw-r--r--nfvbench/cleanup.py74
-rw-r--r--nfvbench/compute.py16
-rw-r--r--nfvbench/config.py10
-rw-r--r--nfvbench/config_plugin.py11
-rw-r--r--nfvbench/credentials.py120
-rw-r--r--nfvbench/factory.py4
-rw-r--r--nfvbench/fluentd.py4
-rw-r--r--nfvbench/nfvbench.py452
-rw-r--r--nfvbench/nfvbenchd.py54
-rw-r--r--nfvbench/nfvbenchvm/nfvbenchvm.conf4
-rw-r--r--nfvbench/packet_stats.py36
-rw-r--r--nfvbench/specs.py2
-rw-r--r--nfvbench/stats_manager.py8
-rw-r--r--nfvbench/summarizer.py215
-rwxr-xr-xnfvbench/traffic_client.py600
-rw-r--r--nfvbench/traffic_gen/dummy.py19
-rw-r--r--nfvbench/traffic_gen/traffic_base.py54
-rw-r--r--nfvbench/traffic_gen/traffic_utils.py28
-rw-r--r--nfvbench/traffic_gen/trex_gen.py560
-rw-r--r--nfvbench/traffic_server.py92
-rw-r--r--nfvbench/utils.py166
-rw-r--r--nfvbenchvm/README.rst86
-rwxr-xr-xnfvbenchvm/dib/build-image.sh291
-rw-r--r--nfvbenchvm/dib/elements/nfvbenchvm/element-deps1
-rw-r--r--nfvbenchvm/dib/elements/nfvbenchvm/fdio-release.repo12
-rwxr-xr-xnfvbenchvm/dib/elements/nfvbenchvm/finalise.d/51-add-cpu-isolation12
-rwxr-xr-xnfvbenchvm/dib/elements/nfvbenchvm/finalise.d/52-change-resolution7
-rwxr-xr-xnfvbenchvm/dib/elements/nfvbenchvm/finalise.d/53-boot-from-new-kernel7
-rw-r--r--nfvbenchvm/dib/elements/nfvbenchvm/package-installs.yaml8
-rwxr-xr-xnfvbenchvm/dib/elements/nfvbenchvm/post-install.d/01-update-kernel7
-rwxr-xr-xnfvbenchvm/dib/elements/nfvbenchvm/post-install.d/02-pip-package12
-rwxr-xr-xnfvbenchvm/dib/elements/nfvbenchvm/post-install.d/02-testpmd-script26
-rwxr-xr-xnfvbenchvm/dib/elements/nfvbenchvm/post-install.d/03-add-execute-attribute4
-rwxr-xr-xnfvbenchvm/dib/elements/nfvbenchvm/post-install.d/03-copy-rc-local15
-rwxr-xr-xnfvbenchvm/dib/elements/nfvbenchvm/post-install.d/04-add-execute-attribute14
-rwxr-xr-xnfvbenchvm/dib/elements/nfvbenchvm/post-install.d/50-pip-package8
-rwxr-xr-xnfvbenchvm/dib/elements/nfvbenchvm/post-install.d/51-cloudcfg-edit3
-rwxr-xr-xnfvbenchvm/dib/elements/nfvbenchvm/post-install.d/52-nfvbench-script56
-rwxr-xr-xnfvbenchvm/dib/elements/nfvbenchvm/post-install.d/53-sshd-script11
-rwxr-xr-xnfvbenchvm/dib/elements/nfvbenchvm/post-install.d/99-cleanup9
-rw-r--r--nfvbenchvm/dib/elements/nfvbenchvm/static/etc/modprobe.d/vfio.conf1
-rw-r--r--nfvbenchvm/dib/elements/nfvbenchvm/static/etc/modules-load.d/vfio-pci.conf1
-rw-r--r--nfvbenchvm/dib/elements/nfvbenchvm/static/etc/openstack/clouds.yaml1
-rw-r--r--nfvbenchvm/dib/elements/nfvbenchvm/static/etc/profile.d/nfvbench.sh1
-rw-r--r--nfvbenchvm/dib/elements/nfvbenchvm/static/etc/rc.d/rc.local.generator122
-rw-r--r--nfvbenchvm/dib/elements/nfvbenchvm/static/etc/rc.d/rc.local.loopvm (renamed from nfvbenchvm/dib/elements/nfvbenchvm/static/etc/rc.d/rc.local)157
-rw-r--r--nfvbenchvm/dib/elements/nfvbenchvm/static/etc/systemd/system/nfvbench.service12
-rw-r--r--nfvbenchvm/dib/elements/nfvbenchvm/static/nfvbench/configure-nfvbench.sh258
-rw-r--r--nfvbenchvm/dib/elements/nfvbenchvm/static/nfvbench/nfvbench.conf25
-rw-r--r--nfvbenchvm/dib/elements/nfvbenchvm/static/nfvbench/start-nfvbench.sh51
-rw-r--r--nfvbenchvm/dib/elements/nfvbenchvm/static/vpp/startup.conf3
-rw-r--r--pylint.rc42
-rw-r--r--requirements-dev.txt18
-rw-r--r--requirements.txt36
-rw-r--r--setup.cfg7
-rw-r--r--setup.py28
-rw-r--r--test-requirements.txt29
-rw-r--r--test/mock_trex.py8
-rw-r--r--test/test_chains.py21
-rw-r--r--test/test_nfvbench.py828
-rw-r--r--test/ut_behave_tests/__init__.py1
-rw-r--r--test/ut_behave_tests/test_data/project=nfvbench&case=characterization&criteria=PASS&page=1.json48702
-rw-r--r--test/ut_behave_tests/test_data/project=nfvbench&case=characterization&criteria=PASS&page=2.json25065
-rw-r--r--test/ut_behave_tests/test_data/project=nfvbench&case=non-regression&criteria=PASS&page=1.json8124
-rw-r--r--test/ut_behave_tests/test_steps.py151
-rw-r--r--test/ut_behave_tests/test_testapi.py132
-rw-r--r--test/ut_behave_tests/test_utils.py119
-rw-r--r--tox.ini59
-rw-r--r--xtesting/ansible/host_vars/127.0.0.110
-rw-r--r--xtesting/ansible/site.yml22
-rw-r--r--xtesting/testcases.yaml101
170 files changed, 91171 insertions, 2143 deletions
diff --git a/.gitignore b/.gitignore
index c2bb485..93ef7df 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,6 @@
.DS_store
*.pyc
+*~
.idea
.tox
.cache
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..32e3299
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,76 @@
+# NFVBench Gitlab-CI Jobs
+---
+include:
+ - project: anuket/releng
+ file: '/gitlab-templates/RTD.gitlab-ci.yml'
+ - project: anuket/releng
+ file: '/gitlab-templates/Docker.gitlab-ci.yml'
+ - project: anuket/releng
+ file: '/gitlab-templates/GoogleStorage.gitlab-ci.yml'
+
+variables:
+ DOCKER_REGISTRY: docker.io
+
+.tox-defaults: &tox-defaults
+ stage: test
+ image: python:3.8
+ before_script:
+ - pip install tox==3.21.4
+ cache:
+ paths:
+ - .cache/pip
+ - venv/
+ rules:
+ - if: $CI_PIPELINE_SOURCE == "merge_request_event" || $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
+
+pep8:
+ <<: *tox-defaults
+ stage: build
+ script:
+ tox -e pep8
+
+tox-py38:
+ <<: *tox-defaults
+ script:
+ tox -e py38
+
+verify-image:
+ stage: build
+ image: centos:7
+ before_script:
+ - yum -y install python3 qemu-img kpartx sudo e2fsprogs
+ - python3 -m venv venv
+ script:
+ - source venv/bin/activate
+ - !reference [.gsutil-install, script]
+ - cd nfvbenchvm/dib
+ - |
+ echo -e "\e[0Ksection_start:`date +%s`:build_image\r\e[0KBuild Image"
+ bash verify-image.sh -v
+ echo -e "\e[0Ksection_end:`date +%s`:build_image\r\e[0K"
+ rules:
+ - if: $CI_PIPELINE_SOURCE == "merge_request_event" || $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
+
+build-image:
+ stage: deploy
+ image: centos:7
+ before_script:
+ - yum -y install python3 qemu-img kpartx sudo e2fsprogs
+ - python3 -m venv venv
+ script:
+ - source venv/bin/activate
+ - !reference [.gsutil-install, script]
+ - cd nfvbenchvm/dib
+ - |
+ echo -e "\e[0Ksection_start:`date +%s`:build_image\r\e[0KBuild Image"
+ bash build-image.sh
+ echo -e "\e[0Ksection_end:`date +%s`:build_image\r\e[0K"
+ rules:
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
+
+docker-build-nfvbench:
+ extends: .docker-build-and-push
+ variables:
+ DOCKER_IMAGE: "$DOCKER_ORGANIZATION/nfvbench"
+ DOCKER_BUILDCONTEXT: "docker"
+ DOCKER_FILEPATH: "docker/Dockerfile"
diff --git a/INFO.yaml b/INFO.yaml
index 5b59f9e..703d920 100644
--- a/INFO.yaml
+++ b/INFO.yaml
@@ -8,16 +8,16 @@ project_lead: &opnfv_nfvbench_ptl
email: 'ahothan@cisco.com'
id: 'ahothan'
company: 'cisco.com'
- timezone: 'Unknown'
+ timezone: 'PST'
primary_contact: *opnfv_nfvbench_ptl
issue_tracking:
type: 'jira'
- url: 'https://jira.opnfv.org/projects/NFVBENCH'
+ url: 'https://jira-old.opnfv.org/projects/NFVBENCH'
key: 'NFVBENCH'
mailing_list:
type: 'mailman2'
- url: 'opnfv-tech-discuss@lists.opnfv.org'
- tag: '[nfvbench]'
+ url: 'anuket-tech-discuss@lists.anuket.io'
+ tag: '#nfvbench'
realtime_discussion:
type: irc
server: 'freenode.net'
@@ -38,6 +38,14 @@ committers:
email: 'yicwang@cisco.com'
company: 'cisco.com'
id: 'yicwang'
+ - name: 'Francois-Regis Menguy'
+ email: 'francoisregis.menguy@orange.com'
+ company: 'orange.com'
+ id: 'fmenguy'
+ - name: 'Gwenael Lambrouin'
+ email: 'gwenael.lambrouin@orange.com'
+ company: 'orange.com'
+ id: 'glambrouin'
tsc:
# yamllint disable rule:line-length
approval: ''
diff --git a/README.rst b/README.rst
index 9779392..ead5053 100644
--- a/README.rst
+++ b/README.rst
@@ -22,10 +22,10 @@ Online Documentation
--------------------
The latest version of the NFVbench documentation is available online at:
-https://opnfv-nfvbench.readthedocs.io/en/latest/testing/user/userguide/index.html
+https://docs.anuket.io/projects/nfvbench/en/latest/index.html
Contact Information
-------------------
-Inquiries and questions: send an email to opnfv-tech-discuss@lists.opnfv.org with a Subject line starting with "#nfvbench"
+Inquiries and questions: send an email to anuket-tech-discuss@lists.anuket.io with a Subject line starting with "#nfvbench"
-Open issues or submit an issue or enhancement request: https://jira.opnfv.org/projects/NFVBENCH/issues (this requires an OPNFV Linux Foundation login).
+Open issues or submit an issue or enhancement request: https://jira-old.opnfv.org/projects/NFVBENCH/issues (this requires an OPNFV Linux Foundation login).
diff --git a/behave_tests/__init__.py b/behave_tests/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/behave_tests/__init__.py
diff --git a/behave_tests/behavedriver.py b/behave_tests/behavedriver.py
new file mode 100644
index 0000000..ad0c8b7
--- /dev/null
+++ b/behave_tests/behavedriver.py
@@ -0,0 +1,70 @@
+#!/usr/bin/env python
+# Copyright 2021 Orange
+#
+# 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.
+#
+
+"""Define classes required to run any Behave test suites."""
+
+from __future__ import division
+
+import json
+import logging
+import os
+
+from xtesting.core.behaveframework import BehaveFramework
+
+__author__ = "François-Régis Menguy <francoisregis.menguy@orange.com>"
+
+
+class BehaveDriver(BehaveFramework):
+ """NFVbench custom BehaveDriver for Xtesting."""
+ # pylint: disable=too-many-instance-attributes
+
+ __logger = logging.getLogger('xtesting.core.behavedriver')
+
+ def __init__(self, **kwargs):
+ super().__init__(**kwargs)
+ self.campaign_json_file = os.path.join(self.res_dir, 'campaign_result.json')
+
+ def extract_nfvbench_results(self):
+ with open(self.campaign_json_file) as stream_:
+ self.details['results'] = json.load(stream_)
+
+ def run(self, **kwargs):
+
+ """Override existing Xtesting BehaveFramework core script run method
+ to extract NFVbench result and push them to DB
+
+ Here are the steps:
+ * run Xtesting behave method:
+ * create the output directories if required,
+ * run behave features with parameters
+ * get the behave results in output.json,
+ * get the nfvbench results in campaign_result.json
+
+ Args:
+ kwargs: Arbitrary keyword arguments.
+
+ Returns:
+ EX_OK if all suites ran well.
+ EX_RUN_ERROR otherwise.
+ """
+ try:
+ super().run(**kwargs)
+ self.extract_nfvbench_results()
+ self.__logger.info("NFVbench results were successfully parsed")
+ except Exception: # pylint: disable=broad-except
+ self.__logger.exception("Cannot parse NFVbench results")
+ return self.EX_RUN_ERROR
+ return self.EX_OK
diff --git a/behave_tests/features/__init__.py b/behave_tests/features/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/behave_tests/features/__init__.py
diff --git a/behave_tests/features/characterization-full.feature b/behave_tests/features/characterization-full.feature
new file mode 100644
index 0000000..8b47dec
--- /dev/null
+++ b/behave_tests/features/characterization-full.feature
@@ -0,0 +1,69 @@
+@characterization
+Feature: characterization
+
+ @throughput
+ Scenario Outline: Run a NDR test for a defined frame size and flow count
+ Given 10 sec run duration
+ And <frame_size> frame size
+ And <flow_count> flow count
+ And ndr rate
+ When NFVbench API is ready
+ Then 3 runs are started and waiting for maximum result
+ And push result to database
+ And extract offered rate result
+
+ Examples: Frame sizes and flow counts
+ | frame_size | flow_count |
+ | 64 | 128 |
+ | 128 | 128 |
+ | 256 | 128 |
+ | 512 | 128 |
+ | 768 | 128 |
+ | 1024 | 128 |
+ | 1280 | 128 |
+ | 1518 | 128 |
+ | IMIX | 128 |
+ | 9000 | 128 |
+ | 64 | 10k |
+ | 128 | 10k |
+ | 256 | 10k |
+ | 512 | 10k |
+ | 768 | 10k |
+ | 1024 | 10k |
+ | 1280 | 10k |
+ | 1518 | 10k |
+ | IMIX | 10k |
+ | 9000 | 10k |
+ | 64 | 100k |
+ | 128 | 100k |
+ | 256 | 100k |
+ | 512 | 100k |
+ | 768 | 100k |
+ | 1024 | 100k |
+ | 1280 | 100k |
+ | 1518 | 100k |
+ | IMIX | 100k |
+ | 9000 | 100k |
+
+
+ @latency
+ Scenario Outline: Run a latency test for a defined frame size and throughput percentage
+ Given 10 sec run duration
+ And TRex is restarted
+ And <frame_size> frame size
+ And 100k flow count
+ And <throughput> rate of previous scenario
+ When NFVbench API is ready
+ Then run is started and waiting for result
+ And push result to database
+
+ Examples: Frame sizes and throughput percentages
+ | frame_size | throughput |
+ | 64 | 70% |
+ | 64 | 90% |
+ | 768 | 70% |
+ | 768 | 90% |
+ | 1518 | 70% |
+ | 1518 | 90% |
+ | 9000 | 70% |
+ | 9000 | 90% |
diff --git a/behave_tests/features/characterization-samples.feature b/behave_tests/features/characterization-samples.feature
new file mode 100644
index 0000000..fc55762
--- /dev/null
+++ b/behave_tests/features/characterization-samples.feature
@@ -0,0 +1,42 @@
+@characterization
+Feature: characterization
+
+ @throughput
+ Scenario Outline: Run a NDR test for a defined frame size and flow count
+ Given 10 sec run duration
+ And <frame_size> frame size
+ And <flow_count> flow count
+ And ndr rate
+ When NFVbench API is ready
+ Then 3 runs are started and waiting for maximum result
+ And push result to database
+ And extract offered rate result
+
+ Examples: Frame sizes and flow counts
+ | frame_size | flow_count |
+ | 64 | 100k |
+ | 768 | 100k |
+ | 1518 | 100k |
+ | 9000 | 100k |
+
+
+ @latency
+ Scenario Outline: Run a latency test for a defined frame size and throughput percentage
+ Given 10 sec run duration
+ And <frame_size> frame size
+ And 100k flow count
+ And <throughput> rate of previous scenario
+ When NFVbench API is ready
+ Then run is started and waiting for result
+ And push result to database
+
+ Examples: Frame sizes and throughput percentages
+ | frame_size | throughput |
+ | 64 | 70% |
+ | 64 | 90% |
+ | 768 | 70% |
+ | 768 | 90% |
+ | 1518 | 70% |
+ | 1518 | 90% |
+ | 9000 | 70% |
+ | 9000 | 90% |
diff --git a/behave_tests/features/environment.py b/behave_tests/features/environment.py
new file mode 100644
index 0000000..7621075
--- /dev/null
+++ b/behave_tests/features/environment.py
@@ -0,0 +1,88 @@
+#!/usr/bin/env python
+# Copyright 2021 Orange
+#
+# 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.
+#
+
+
+import json
+import os
+import logging
+import pathlib
+import time
+
+
+def before_all(context):
+ context.data = {'config': os.getenv('NFVBENCH_CONFIG_PATH', '/etc/nfvbench/nfvbench.cfg')}
+
+ context.data['PROJECT_NAME'] = os.getenv('PROJECT_NAME', 'nfvbench')
+ context.data['TEST_DB_URL'] = os.getenv('TEST_DB_URL')
+ context.data['BASE_TEST_DB_URL'] = ''
+ if context.data['TEST_DB_URL']:
+ context.data['BASE_TEST_DB_URL'] = context.data['TEST_DB_URL'].replace('results', '')
+ context.data['INSTALLER_TYPE'] = os.getenv('INSTALLER_TYPE')
+ context.data['DEPLOY_SCENARIO'] = os.getenv('DEPLOY_SCENARIO')
+ context.data['NODE_NAME'] = os.getenv('NODE_NAME', 'nfvbench')
+ context.data['BUILD_TAG'] = os.getenv('BUILD_TAG')
+
+ # NFVbench server host and port
+ context.host_ip = os.getenv('NFVBENCH_SERVER_HOST', '127.0.0.1')
+ context.port = int(os.getenv('NFVBENCH_SERVER_PORT', '7555'))
+
+
+def before_feature(context, feature):
+ context.rates = {}
+ context.results = {}
+ context.start_time = time.time()
+ context.CASE_NAME = feature.name
+
+ # Create results dir if needed
+ results_dir = pathlib.Path('/var/lib/xtesting/results/' + context.CASE_NAME)
+ if not results_dir.exists():
+ results_dir.mkdir()
+
+ # Setup a second logger to be able to understand why a test passed or failed
+ # (The main logger is used by behave itself)
+ context.logger = logging.getLogger('behave_tests')
+ context.logger.setLevel(logging.INFO)
+ fh = logging.FileHandler(filename=results_dir / pathlib.Path('behave_tests.log'),
+ mode='w') # Re-create the file at the beginning of the feature
+ fh.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(message)s'))
+ context.logger.addHandler(fh)
+
+ context.logger.info('before_feature: ' + feature.name)
+
+
+def before_scenario(context, scenario):
+ context.tag = scenario.tags[0]
+ context.json = {'log_file': '/var/lib/xtesting/results/' + context.CASE_NAME + '/nfvbench.log'}
+ user_label = os.getenv('NFVBENCH_USER_LABEL', None)
+ if user_label:
+ context.json['user_label'] = user_label
+ loopvm_flavor = os.getenv('NFVBENCH_LOOPVM_FLAVOR_NAME', None)
+ if loopvm_flavor:
+ context.json['flavor_type'] = loopvm_flavor
+ context.synthesis = {}
+ context.percentage_rate = None
+
+ context.logger.info('before_scenario: ' + scenario.name)
+
+
+def after_feature(context, feature):
+ if len(context.results) == 0:
+ # No result to dump
+ return
+
+ results_dir = pathlib.Path('/var/lib/xtesting/results/' + context.CASE_NAME)
+ results_file = results_dir / pathlib.Path('campaign_result.json')
+ results_file.write_text(json.dumps(context.results, indent=4))
diff --git a/behave_tests/features/non-regression.feature b/behave_tests/features/non-regression.feature
new file mode 100644
index 0000000..1c21c47
--- /dev/null
+++ b/behave_tests/features/non-regression.feature
@@ -0,0 +1,45 @@
+@non-regression
+Feature: non-regression
+
+ @throughput
+ Scenario Outline: Run a NDR test for a defined frame size
+ Given 10 sec run duration
+ And <frame_size> frame size
+ And 100k flow count
+ And ndr rate
+ When NFVbench API is ready
+ Then 3 runs are started and waiting for maximum result
+ And push result to database
+ And extract offered rate result
+ And verify throughput result is in same range as the previous result
+ And verify throughput result is in same range as the characterization result
+
+ Examples: Frame sizes
+ | frame_size |
+ | 64 |
+ | 768 |
+ | 1518 |
+ | 9000 |
+
+
+ @latency
+ Scenario Outline: Run a latency test for a defined frame size and throughput percentage
+ Given 10 sec run duration
+ And <frame_size> frame size
+ And 100k flow count
+ And packet rate equal to <percentage> of max throughput of last characterization
+ When NFVbench API is ready
+ Then run is started and waiting for result
+ And push result to database
+ And verify latency result is lower than 1000 microseconds
+
+ Examples: Frame sizes and throughput percentages
+ | frame_size | percentage |
+ | 64 | 70% |
+ | 64 | 90% |
+ | 768 | 70% |
+ | 768 | 90% |
+ | 1518 | 70% |
+ | 1518 | 90% |
+ | 9000 | 70% |
+ | 9000 | 90% |
diff --git a/behave_tests/features/quick-test-10kpps.feature b/behave_tests/features/quick-test-10kpps.feature
new file mode 100644
index 0000000..d46000c
--- /dev/null
+++ b/behave_tests/features/quick-test-10kpps.feature
@@ -0,0 +1,13 @@
+@quick-test-10kpps
+Feature: quick-test-10kpps
+
+ @throughput
+ Scenario: Run a 10s test at 10kpps with 64-byte frames and 128 flows
+ Given 10 sec run duration
+ And TRex is restarted
+ And 64 frame size
+ And 128 flow count
+ And 10kpps rate
+ When NFVbench API is ready
+ Then 1 runs are started and waiting for maximum result
+ And push result to database
diff --git a/behave_tests/features/steps/__init__.py b/behave_tests/features/steps/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/behave_tests/features/steps/__init__.py
diff --git a/behave_tests/features/steps/steps.py b/behave_tests/features/steps/steps.py
new file mode 100644
index 0000000..c347871
--- /dev/null
+++ b/behave_tests/features/steps/steps.py
@@ -0,0 +1,629 @@
+#!/usr/bin/env python
+# Copyright 2021 Orange
+#
+# 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.
+#
+
+from behave import given
+from behave import when
+from behave import then
+from copy import deepcopy
+from requests import RequestException
+from retry import retry
+import json
+import requests
+import subprocess
+from subprocess import DEVNULL
+from typing import Optional
+
+from nfvbench.summarizer import Formatter
+from nfvbench.traffic_gen.traffic_utils import parse_rate_str
+
+from behave_tests.features.steps.testapi import TestapiClient, nfvbench_input_to_str
+
+
+STATUS_ERROR = "ERROR"
+
+STATUS_OK = "OK"
+
+
+"""Given steps."""
+
+
+@given('PROJECT_NAME: {project_name}')
+def override_xtesting_project_name(context, project_name):
+ context.data['PROJECT_NAME'] = project_name
+
+
+@given('TEST_DB_URL: {test_db_url}')
+def override_xtesting_test_db_url(context, test_db_url):
+ context.data['TEST_DB_URL'] = test_db_url
+ context.data['BASE_TEST_DB_URL'] = context.data['TEST_DB_URL'].replace('results', '')
+
+
+@given('INSTALLER_TYPE: {installer_type}')
+def override_xtesting_installer_type(context, installer_type):
+ context.data['INSTALLER_TYPE'] = installer_type
+
+
+@given('DEPLOY_SCENARIO: {deploy_scenario}')
+def override_xtesting_deploy_scenario(context, deploy_scenario):
+ context.data['DEPLOY_SCENARIO'] = deploy_scenario
+
+
+@given('NODE_NAME: {node_name}')
+def override_xtesting_node_name(context, node_name):
+ context.data['NODE_NAME'] = node_name
+
+
+@given('BUILD_TAG: {build_tag}')
+def override_xtesting_build_tag(context, build_tag):
+ context.data['BUILD_TAG'] = build_tag
+
+
+@given('NFVbench config from file: {config_path}')
+def init_config(context, config_path):
+ context.data['config'] = config_path
+
+
+@given('a JSON NFVbench config')
+def init_config_from_json(context):
+ context.json.update(json.loads(context.text))
+
+
+@given('log file: {log_file_path}')
+def log_config(context, log_file_path):
+ context.json['log_file'] = log_file_path
+
+
+@given('json file: {json_file_path}')
+def json_config(context, json_file_path):
+ context.json['json'] = json_file_path
+
+
+@given('no clean up')
+def add_no_clean_up_flag(context):
+ context.json['no_cleanup'] = 'true'
+
+
+@given('TRex is restarted')
+def add_restart(context):
+ context.json['restart'] = 'true'
+
+
+@given('{label} label')
+def add_label(context, label):
+ context.json['label'] = label
+
+
+@given('{frame_size} frame size')
+def add_frame_size(context, frame_size):
+ context.json['frame_sizes'] = [frame_size]
+
+
+@given('{flow_count} flow count')
+def add_flow_count(context, flow_count):
+ context.json['flow_count'] = flow_count
+
+
+@given('{rate} rate')
+def add_rate(context, rate):
+ context.json['rate'] = rate
+
+
+@given('{duration} sec run duration')
+def add_duration(context, duration):
+ context.json['duration_sec'] = duration
+
+
+@given('{percentage_rate} rate of previous scenario')
+def add_percentage_rate(context, percentage_rate):
+ context.percentage_rate = percentage_rate
+ rate = percentage_previous_rate(context, percentage_rate)
+ context.json['rate'] = rate
+ context.logger.info(f"add_percentage_rate: {percentage_rate} => rate={rate}")
+
+
+@given('packet rate equal to {percentage} of max throughput of last characterization')
+def add_packet_rate(context, percentage: str):
+ """Update nfvbench run config with packet rate based on reference value.
+
+ For the already configured frame size and flow count, retrieve the max
+ throughput obtained during the latest successful characterization run. Then
+ retain `percentage` of this value for the packet rate and update `context`.
+
+ Args:
+ context: The context data of the current scenario run. It includes the
+ testapi endpoints to retrieve the reference values.
+
+ percentage: String representation of the percentage of the reference max
+ throughput. Example: "70%"
+
+ Updates context:
+ context.percentage_rate: percentage of reference max throughput
+ using a string representation. Example: "70%"
+
+ context.json['rate']: packet rate in packets per second using a string
+ representation. Example: "2000pps"
+
+ Raises:
+ ValueError: invalid percentage string
+
+ AssertionError: cannot find reference throughput value
+
+ """
+ # Validate percentage
+ if not percentage.endswith('%'):
+ raise ValueError('Invalid percentage string: "{0}"'.format(percentage))
+ percentage_float = convert_percentage_str_to_float(percentage)
+
+ # Retrieve nfvbench results report from testapi for:
+ # - the latest throughput scenario inside a characterization feature that passed
+ # - the test duration, frame size and flow count given in context.json
+ # - (optionally) the user_label and flavor_type given in context.json
+ # - the 'ndr' rate
+ testapi_params = {"project_name": context.data['PROJECT_NAME'],
+ "case_name": "characterization"}
+ nfvbench_test_conditions = deepcopy(context.json)
+ nfvbench_test_conditions['rate'] = 'ndr'
+ testapi_client = TestapiClient(testapi_url=context.data['TEST_DB_URL'])
+ last_result = testapi_client.find_last_result(testapi_params,
+ scenario_tag="throughput",
+ nfvbench_test_input=nfvbench_test_conditions)
+ if last_result is None:
+ error_msg = "No characterization result found for scenario_tag=throughput"
+ error_msg += " and nfvbench test conditions "
+ error_msg += nfvbench_input_to_str(nfvbench_test_conditions)
+ context.logger.error(error_msg)
+ raise AssertionError(error_msg)
+
+ # From the results report, extract the max throughput in packets per second
+ total_tx_rate = extract_value(last_result["output"], "total_tx_rate")
+ context.logger.info("add_packet_rate: max throughput of last characterization (pps): "
+ f"{total_tx_rate:,}")
+
+ # Compute the desired packet rate
+ rate = round(total_tx_rate * percentage_float)
+ context.logger.info(f"add_packet_rate: percentage={percentage} rate(pps)={rate:,}")
+
+ # Build rate string using a representation understood by nfvbench
+ rate_str = str(rate) + "pps"
+
+ # Update context
+ context.percentage_rate = percentage
+ context.json['rate'] = rate_str
+
+
+"""When steps."""
+
+
+@when('NFVbench API is ready')
+@when('NFVbench API is ready on host {host_ip}')
+@when('NFVbench API is ready on host {host_ip} and port {port:d}')
+def start_server(context, host_ip: Optional[str]=None, port: Optional[int]=None):
+ """Start nfvbench server if needed and wait until it is ready.
+
+ Quickly check whether nfvbench HTTP server is ready by reading the "/status"
+ page. If not, start the server locally. Then wait until nfvbench API is
+ ready by polling the "/status" page.
+
+ This code is useful when behave and nfvbench run on the same machine. In
+ particular, it is needed to run behave tests with nfvbench Docker container.
+
+ There is currently no way to prevent behave from starting automatically
+ nfvbench server when this is not desirable, for instance when behave is
+ started using ansible-role-nfvbench. The user or the orchestration layer
+ should make sure nfvbench API is ready before starting behave tests.
+
+ """
+ # NFVbench server host IP and port number have been setup from environment variables (see
+ # environment.py:before_all()). Here we allow to override them from feature files:
+ if host_ip is not None:
+ context.host_ip = host_ip
+ if port is not None:
+ context.port = port
+
+ nfvbench_test_url = "http://{ip}:{port}/status".format(ip=context.host_ip, port=context.port)
+ context.logger.info("start_server: test nfvbench API on URL: " + nfvbench_test_url)
+
+ try:
+ # check if API is already available
+ requests.get(nfvbench_test_url)
+ except RequestException:
+ context.logger.info("nfvbench server not running")
+
+ cmd = ["nfvbench", "-c", context.data['config'], "--server"]
+ if context.host_ip != "127.0.0.1":
+ cmd.append("--host")
+ cmd.append(context.host_ip)
+ if context.port != 7555:
+ cmd.append("--port")
+ cmd.append(str(context.port))
+
+ context.logger.info("Start nfvbench server with command: " + " ".join(cmd))
+
+ subprocess.Popen(cmd, stdout=DEVNULL, stderr=subprocess.STDOUT)
+
+ # Wait until nfvbench API is ready
+ test_nfvbench_api(nfvbench_test_url)
+
+
+"""Then steps."""
+
+
+@then('run is started and waiting for result')
+@then('{repeat:d} runs are started and waiting for maximum result')
+def run_nfvbench_traffic(context, repeat=1):
+ context.logger.info(f"run_nfvbench_traffic: fs={context.json['frame_sizes'][0]} "
+ f"fc={context.json['flow_count']} "
+ f"rate={context.json['rate']} repeat={repeat}")
+
+ if 'json' not in context.json:
+ # Build filename for nfvbench results in JSON format
+ context.json['json'] = '/var/lib/xtesting/results/' + context.CASE_NAME + \
+ '/nfvbench-' + context.tag + \
+ '-fs_' + context.json['frame_sizes'][0] + \
+ '-fc_' + context.json['flow_count']
+ if context.percentage_rate is not None:
+ # Add rate as a percentage, eg '-rate_70%'
+ context.json['json'] += '-rate_' + context.percentage_rate
+ else:
+ # Add rate in bits or packets per second, eg '-rate_15Gbps' or '-rate_10kpps'
+ context.json['json'] += '-rate_' + context.json['rate']
+ context.json['json'] += '.json'
+
+ json_base_name = context.json['json']
+
+ max_total_tx_rate = None
+ # rem: don't init with 0 in case nfvbench gets crazy and returns a negative packet rate
+
+ for i in range(repeat):
+ if repeat > 1:
+ context.json['json'] = json_base_name.strip('.json') + '-' + str(i) + '.json'
+
+ # Start nfvbench traffic and wait result:
+ url = "http://{ip}:{port}/start_run".format(ip=context.host_ip, port=context.port)
+ payload = json.dumps(context.json)
+ r = requests.post(url, data=payload, headers={'Content-Type': 'application/json'})
+ context.request_id = json.loads(r.text)["request_id"]
+ assert r.status_code == 200
+ result = wait_result(context)
+ assert result["status"] == STATUS_OK
+
+ # Extract useful metrics from result:
+ total_tx_rate = extract_value(result, "total_tx_rate")
+ overall = extract_value(result, "overall")
+ avg_delay_usec = extract_value(overall, "avg_delay_usec")
+
+ # Log latest result:
+ context.logger.info(f"run_nfvbench_traffic: result #{i+1}: "
+ f"total_tx_rate(pps)={total_tx_rate:,} " # Add ',' thousand separator
+ f"avg_latency_usec={round(avg_delay_usec)}")
+
+ # Keep only the result with the highest packet rate:
+ if max_total_tx_rate is None or total_tx_rate > max_total_tx_rate:
+ max_total_tx_rate = total_tx_rate
+ context.result = result
+ context.synthesis['total_tx_rate'] = total_tx_rate
+ context.synthesis['avg_delay_usec'] = avg_delay_usec
+
+ # Log max result only when we did two nfvbench runs or more:
+ if repeat > 1:
+ context.logger.info(f"run_nfvbench_traffic: max result: "
+ f"total_tx_rate(pps)={context.synthesis['total_tx_rate']:,} "
+ f"avg_latency_usec={round(context.synthesis['avg_delay_usec'])}")
+
+
+@then('extract offered rate result')
+def save_rate_result(context):
+ total_tx_rate = extract_value(context.result, "total_tx_rate")
+ context.rates[context.json['frame_sizes'][0] + '_' + context.json['flow_count']] = total_tx_rate
+
+
+@then('verify throughput result is in same range as the previous result')
+@then('verify throughput result is greater than {threshold} of the previous result')
+def get_throughput_result_from_database(context, threshold='90%'):
+ last_result = get_last_result(context)
+
+ if last_result:
+ compare_throughput_values(context, last_result, threshold)
+
+
+@then('verify latency result is in same range as the previous result')
+@then('verify latency result is greater than {threshold} of the previous result')
+def get_latency_result_from_database(context, threshold='90%'):
+ last_result = get_last_result(context)
+
+ if last_result:
+ compare_latency_values(context, last_result, threshold)
+
+
+@then('verify latency result is lower than {max_avg_latency_usec:g} microseconds')
+def check_latency_result_against_fixed_threshold(context, max_avg_latency_usec: float):
+ """Check latency result against a fixed threshold.
+
+ Check that the average latency measured during the current scenario run is
+ lower or equal to the provided fixed reference value.
+
+ Args:
+ context: The context data of the current scenario run. It includes the
+ test results for that run.
+
+ max_avg_latency_usec: Reference value to be used as a threshold. This
+ is a maximum average latency expressed in microseconds.
+
+ Raises:
+ AssertionError: The latency result is strictly greater than the reference value.
+
+ """
+ # Get the just measured average latency (a float):
+ new_avg_latency_usec = context.synthesis['avg_delay_usec']
+
+ # Log what we test:
+ context.logger.info("check_latency_result_against_fixed_threshold(usec): "
+ "{value}<={ref}?".format(
+ value=round(new_avg_latency_usec),
+ ref=round(max_avg_latency_usec)))
+
+ # Compare measured value to reference:
+ if new_avg_latency_usec > max_avg_latency_usec:
+ raise AssertionError("Average latency higher than max threshold: "
+ "{value} usec > {ref} usec".format(
+ value=round(new_avg_latency_usec),
+ ref=round(max_avg_latency_usec)))
+
+
+@then(
+ 'verify result is in [{min_reference_value}pps, {max_reference_value}pps] range for throughput')
+def compare_throughput_pps_result_with_range_values(context, min_reference_value,
+ max_reference_value):
+ context.unit = 'pps'
+ reference_values = [min_reference_value + 'pps', max_reference_value + 'pps']
+ throughput_comparison(context, reference_values=reference_values)
+
+
+@then(
+ 'verify result is in [{min_reference_value}bps, {max_reference_value}bps] range for throughput')
+def compare_throughput_bps_result_with_range_values(context, min_reference_value,
+ max_reference_value):
+ context.unit = 'bps'
+ reference_values = [min_reference_value + 'bps', max_reference_value + 'bps']
+ throughput_comparison(context, reference_values=reference_values)
+
+
+@then('verify result is in {reference_values} range for latency')
+def compare_result_with_range_values(context, reference_values):
+ latency_comparison(context, reference_values=reference_values)
+
+
+@then('verify throughput result is in same range as the characterization result')
+@then('verify throughput result is greater than {threshold} of the characterization result')
+def get_characterization_throughput_result_from_database(context, threshold='90%'):
+ last_result = get_last_result(context, True)
+ if not last_result:
+ raise AssertionError("No characterization result found.")
+ compare_throughput_values(context, last_result, threshold)
+
+
+@then('verify latency result is in same range as the characterization result')
+@then('verify latency result is greater than {threshold} of the characterization result')
+def get_characterization_latency_result_from_database(context, threshold='90%'):
+ last_result = get_last_result(context, True)
+ if not last_result:
+ raise AssertionError("No characterization result found.")
+ compare_latency_values(context, last_result, threshold)
+
+@then('push result to database')
+def push_result_database(context):
+ if context.tag == "latency":
+ # override input rate value with percentage one to avoid no match
+ # if pps is not accurate with previous one
+ context.json["rate"] = context.percentage_rate
+ json_result = {"synthesis": context.synthesis, "input": context.json, "output": context.result}
+
+ if context.tag not in context.results:
+ context.results[context.tag] = [json_result]
+ else:
+ context.results[context.tag].append(json_result)
+
+
+"""Utils methods."""
+
+
+@retry(AssertionError, tries=24, delay=5.0, logger=None)
+def test_nfvbench_api(nfvbench_test_url: str):
+ try:
+ r = requests.get(nfvbench_test_url)
+ assert r.status_code == 200
+ assert json.loads(r.text)["error_message"] == "no pending NFVbench run"
+ except RequestException as exc:
+ raise AssertionError("Fail to access NFVbench API") from exc
+
+
+@retry(AssertionError, tries=1000, delay=2.0, logger=None)
+def wait_result(context):
+ r = requests.get("http://{ip}:{port}/status".format(ip=context.host_ip, port=context.port))
+ context.raw_result = r.text
+ result = json.loads(context.raw_result)
+ assert r.status_code == 200
+ assert result["status"] == STATUS_OK or result["status"] == STATUS_ERROR
+ return result
+
+
+def percentage_previous_rate(context, rate):
+ previous_rate = context.rates[context.json['frame_sizes'][0] + '_' + context.json['flow_count']]
+
+ if rate.endswith('%'):
+ rate_percent = convert_percentage_str_to_float(rate)
+ return str(int(previous_rate * rate_percent)) + 'pps'
+ raise Exception('Unknown rate string format %s' % rate)
+
+
+def convert_percentage_str_to_float(percentage):
+ float_percent = float(percentage.replace('%', '').strip())
+ if float_percent <= 0 or float_percent > 100.0:
+ raise Exception('%s is out of valid range (must be 1-100%%)' % percentage)
+ return float_percent / 100
+
+
+def compare_throughput_values(context, last_result, threshold):
+ assert last_result["output"]["status"] == context.result["status"]
+ if last_result["output"]["status"] == "OK":
+ old_throughput = extract_value(last_result["output"], "total_tx_rate")
+ throughput_comparison(context, old_throughput, threshold=threshold)
+
+
+def compare_latency_values(context, last_result, threshold):
+ assert last_result["output"]["status"] == context.result["status"]
+ if last_result["output"]["status"] == "OK":
+ old_latency = extract_value(extract_value(last_result["output"], "overall"),
+ "avg_delay_usec")
+ latency_comparison(context, old_latency, threshold=threshold)
+
+
+def throughput_comparison(context, old_throughput_pps=None, threshold=None, reference_values=None):
+ current_throughput_pps = extract_value(context.result, "total_tx_rate")
+
+ if old_throughput_pps:
+ if not current_throughput_pps >= convert_percentage_str_to_float(
+ threshold) * old_throughput_pps:
+ raise AssertionError(
+ "Current run throughput {current_throughput_pps} is not over {threshold} "
+ " of previous value ({old_throughput_pps})".format(
+ current_throughput_pps=Formatter.suffix('pps')(
+ Formatter.standard(current_throughput_pps)),
+ threshold=threshold, old_throughput_pps=Formatter.suffix('pps')(
+ Formatter.standard(old_throughput_pps))))
+ elif reference_values:
+ if context.unit == 'bps':
+ current_throughput = extract_value(context.result, "offered_tx_rate_bps")
+ reference_values = [int(parse_rate_str(x)['rate_bps']) for x in reference_values]
+ formatted_current_throughput = Formatter.bits(current_throughput)
+ formatted_min_reference_value = Formatter.bits(reference_values[0])
+ formatted_max_reference_value = Formatter.bits(reference_values[1])
+ else:
+ current_throughput = current_throughput_pps
+ reference_values = [int(parse_rate_str(x)['rate_pps']) for x in reference_values]
+ formatted_current_throughput = Formatter.suffix('pps')(
+ Formatter.standard(current_throughput))
+ formatted_min_reference_value = Formatter.suffix('pps')(
+ Formatter.standard(reference_values[0]))
+ formatted_max_reference_value = Formatter.suffix('pps')(
+ Formatter.standard(reference_values[1]))
+ if not reference_values[0] <= int(current_throughput) <= reference_values[1]:
+ raise AssertionError(
+ "Current run throughput {current_throughput} is not in reference values "
+ "[{min_reference_value}, {max_reference_value}]".format(
+ current_throughput=formatted_current_throughput,
+ min_reference_value=formatted_min_reference_value,
+ max_reference_value=formatted_max_reference_value))
+
+
+def latency_comparison(context, old_latency=None, threshold=None, reference_values=None):
+ overall = extract_value(context.result, "overall")
+ current_latency = extract_value(overall, "avg_delay_usec")
+
+ if old_latency:
+ if not current_latency <= (2 - convert_percentage_str_to_float(threshold)) * old_latency:
+ threshold = str(200 - int(threshold.strip('%'))) + '%'
+ raise AssertionError(
+ "Current run latency {current_latency}usec is not less than {threshold} of "
+ "previous value ({old_latency}usec)".format(
+ current_latency=Formatter.standard(current_latency), threshold=threshold,
+ old_latency=Formatter.standard(old_latency)))
+ elif reference_values:
+ if not reference_values[0] <= current_latency <= reference_values[1]:
+ raise AssertionError(
+ "Current run latency {current_latency}usec is not in reference values "
+ "[{min_reference_value}, {max_reference_value}]".format(
+ current_latency=Formatter.standard(current_latency),
+ min_reference_value=Formatter.standard(reference_values[0]),
+ max_reference_value=Formatter.standard(reference_values[1])))
+
+
+def extract_value(obj, key):
+ """Pull all values of specified key from nested JSON."""
+ arr = []
+
+ def extract(obj, arr, key):
+ """Recursively search for values of key in JSON tree."""
+ if isinstance(obj, dict):
+ for k, v in obj.items():
+ if k == key:
+ arr.append(v)
+ elif isinstance(v, (dict, list)):
+ extract(v, arr, key)
+ elif isinstance(obj, list):
+ for item in obj:
+ extract(item, arr, key)
+ return arr
+
+ results = extract(obj, arr, key)
+ return results[0]
+
+
+def get_last_result(context, reference: bool = False):
+ """Look for a previous result in TestAPI database.
+
+ Search TestAPI results from newest to oldest and return the first result
+ record matching the context constraints. Log an overview of the results
+ found (max rate pps, avg delay usec, test conditions, date of measurement).
+
+ The result record test case must match the current test case
+ ('characterization' or 'non-regression') unless `reference` is set to True.
+
+ The result record scenario tag must match the current scenario tag
+ ('throughput' or 'latency').
+
+ Args:
+ context: behave context including project name, test case name, traffic
+ configuration (frame size, flow count, test duration), type of the
+ compute node under test (via loop VM flavor_type) and platform (via
+ user_label).
+
+ reference: when True, look for results with the 'characterization' test
+ case name instead of the current test case name.
+
+ Returns:
+ a JSON dictionary with the results, ie a dict with the keys "input",
+ "output" and "synthesis" when the scenario tag is 'throughput' or
+ 'latency'
+ """
+ if reference:
+ case_name = 'characterization'
+ else:
+ case_name = context.CASE_NAME
+ testapi_params = {"project_name": context.data['PROJECT_NAME'],
+ "case_name": case_name}
+ testapi_client = TestapiClient(testapi_url=context.data['TEST_DB_URL'])
+ last_result = testapi_client.find_last_result(testapi_params,
+ scenario_tag=context.tag,
+ nfvbench_test_input=context.json)
+ if last_result is None:
+ error_msg = "get_last_result: No result found in TestAPI database:"
+ error_msg += f" case_name={case_name} scenario_tag={context.tag} "
+ error_msg += nfvbench_input_to_str(context.json)
+ context.logger.error(error_msg)
+ raise AssertionError(error_msg)
+
+ # Log an overview of the last result (latency and max throughput)
+ measurement_date = last_result["output"]["result"]["date"]
+ total_tx_rate = extract_value(last_result["output"], "total_tx_rate")
+ avg_delay_usec = extract_value(extract_value(last_result["output"], "overall"),
+ "avg_delay_usec")
+ context.logger.info(f"get_last_result: case_name={case_name} scenario_tag={context.tag}"
+ f' measurement_date="{measurement_date}"'
+ f" total_tx_rate(pps)={total_tx_rate:,}"
+ f" avg_latency_usec={round(avg_delay_usec)}")
+
+ return last_result
diff --git a/behave_tests/features/steps/testapi.py b/behave_tests/features/steps/testapi.py
new file mode 100644
index 0000000..f211ee5
--- /dev/null
+++ b/behave_tests/features/steps/testapi.py
@@ -0,0 +1,195 @@
+#!/usr/bin/env python
+# Copyright 2021 Orange
+#
+# 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.
+#
+
+import logging
+import requests
+
+
+class TestapiClient:
+ __test__ = False # Hint for pytest: TestapiClient is not a test class.
+
+ def __init__(self, testapi_url: str):
+ """
+ Args:
+ testapi_url: testapi URL as a string, for instance
+ "http://172.20.73.203:8000/api/v1/results"
+ """
+ self._base_url = testapi_url
+ self._logger = logging.getLogger("behave_tests")
+
+ def find_last_result(self, testapi_params, scenario_tag: str, nfvbench_test_input):
+ """Search testapi database and return latest result matching filters.
+
+ Look for the most recent testapi result matching testapi params, behave
+ scenario tag and nfvbench test input params, and return that result as a
+ dictionary.
+
+ Args:
+ testapi_params: dict holding the parameters of the testapi request. See
+ `build_testapi_url()` for the list of supported keys.
+
+ scenario_tag: Behave scenario tag to filter results. One of
+ "throughput" or "latency".
+
+ nfvbench_test_input: dict holding nfvbench test parameters and used
+ to filter the testapi results. The following keys are currently
+ supported:
+ - mandatory keys: 'duration_sec', 'frame_sizes', 'flow_count', 'rate'
+ - optional keys: 'user_label'
+
+ Returns:
+ None if no result matching the filters can be found, else a dictionary
+ built from testapi JSON test result.
+
+ """
+ self._logger.info(f"find_last_result: filter on scenario tag: {scenario_tag}")
+ nfvbench_input_str = nfvbench_input_to_str(nfvbench_test_input)
+ self._logger.info(f"find_last_result: filter on test conditions: {nfvbench_input_str}")
+
+ page = 1
+ while True: # While there are results pages to read
+ url = self._build_testapi_url(testapi_params, page)
+ self._logger.info("find_last_result: GET " + url)
+ last_results = self._do_testapi_request(url)
+
+ for result in last_results["results"]:
+ for tagged_result in result["details"]["results"][scenario_tag]:
+ if tagged_result["output"]["status"] != "OK":
+ # Drop result if nfvbench status is not OK
+ # (such result should not have been put in database by behave_tests,
+ # but let's be cautious)
+ continue
+ if equal_test_conditions(tagged_result["input"], nfvbench_test_input):
+ return tagged_result
+
+ if page >= last_results["pagination"]["total_pages"]:
+ break
+ page += 1
+
+ return None
+
+ def _build_testapi_url(self, testapi_params, page=1):
+ """Build URL for testapi request.
+
+ Build a URL for a testapi HTTP GET request using the provided parameters and
+ limiting the results to the tests whose criteria equals "PASS".
+
+ Args:
+ testapi_params: dictionary holding the parameters of the testapi
+ request:
+ - mandatory keys: "project_name", "case_name"
+ - optional keys: "installer", "pod_name"
+ - ignored keys: "build_tag", "scenario", "version", "criteria".
+
+ page: (Optional) number of the results page to get.
+
+ """
+ url = self._base_url
+ url += f"?project={testapi_params['project_name']}"
+ url += f"&case={testapi_params['case_name']}"
+
+ if "installer" in testapi_params.keys():
+ url += f"&installer={testapi_params['installer']}"
+ if "pod_name" in testapi_params.keys():
+ url += f"&pod={testapi_params['pod_name']}"
+
+ url += '&criteria=PASS'
+ url += f"&page={page}"
+
+ return url
+
+ def _do_testapi_request(self, testapi_url):
+ """Perform HTTP GET request on testapi.
+
+ Perform an HTTP GET request on testapi, check status code and return JSON
+ results as dictionary.
+
+ Args:
+ testapi_url: a complete URL to request testapi results (with base
+ endpoint and parameters)
+
+ Returns:
+ The JSON document from testapi as a Python dictionary
+
+ Raises:
+ * requests.exceptions.ConnectionError in case of network problem
+ when trying to establish a connection with the TestAPI database
+ (DNS failure, refused connection, ...)
+
+ * requests.exceptions.ConnectTimeout in case of timeout during the
+ request.
+
+ * requests.exception.HTTPError if the HTTP request returned an
+ unsuccessful status code.
+
+ * another exception derived from requests.exceptions.RequestException
+ in case of problem during the HTTP request.
+ """
+ response = requests.get(testapi_url)
+ # raise an HTTPError if the HTTP request returned an unsuccessful status code:
+ response.raise_for_status()
+ return response.json()
+
+
+def equal_test_conditions(testapi_input, nfvbench_input):
+ """Check test conditions in behave scenario results record.
+
+ Check whether a behave scenario results record from testapi matches a given
+ nfvbench input, ie whether the record comes from a test done under the same
+ conditions (frame size, flow count, ...)
+
+ Args:
+ testapi_input: dict holding the test conditions of a behave scenario
+ results record from testapi
+
+ nfvbench_input: dict of nfvbench test parameters (reference)
+
+ The following dict keys are currently supported:
+ - mandatory keys: 'duration_sec', 'frame_sizes', 'flow_count', 'rate'
+ - optional keys: 'user_label'
+
+ Optional keys are taken into account only when they can be found in
+ `nfvbench_input`, else they are ignored.
+
+ Returns:
+ True if test conditions match, else False.
+
+ """
+ # Select required keys (other keys can be not set or unconsistent between scenarios)
+ required_keys = ['duration_sec', 'frame_sizes', 'flow_count', 'rate']
+ if 'user_label' in nfvbench_input:
+ required_keys.append('user_label')
+
+ try:
+ testapi_subset = {k: testapi_input[k] for k in required_keys}
+ nfvbench_subset = {k: nfvbench_input[k] for k in required_keys}
+ return testapi_subset == nfvbench_subset
+ except KeyError:
+ # Fail the comparison if a required key is missing from one of the dicts
+ return False
+
+
+def nfvbench_input_to_str(nfvbench_input: dict) -> str:
+ """Build string showing nfvbench input parameters used for results search
+
+ Args:
+ nfvbench_input: dict of nfvbench test parameters
+ """
+ string = ""
+ for key in ['user_label', 'frame_sizes', 'flow_count', 'rate', 'duration_sec']:
+ if key in nfvbench_input:
+ string += f"{key}={nfvbench_input[key]} "
+ return string
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 78b8484..46be733 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -1,47 +1,53 @@
# docker file for creating a container that has nfvbench installed and ready to use
-FROM ubuntu:16.04
+FROM ubuntu:20.04
-ENV TREX_VER "v2.61"
-ENV VM_IMAGE_VER "0.9"
-
-# Note: do not clone with --depth 1 as it will cause pbr to fail extracting the nfvbench version
-# from the git tag
+ENV TREX_VER "v2.89"
+ENV VM_IMAGE_VER "0.15"
+ENV PYTHONIOENCODING "utf8"
RUN apt-get update && apt-get install -y \
git \
kmod \
pciutils \
- python \
- python-pip \
+ python3.8 \
vim \
wget \
net-tools \
iproute2 \
libelf1 \
+ python3-dev \
+ libpython3.8-dev \
+ python3-distutils \
+ gcc \
+ && ln -s /usr/bin/python3.8 /usr/local/bin/python3 \
&& mkdir -p /opt/trex \
&& mkdir /var/log/nfvbench \
- && wget --no-cache https://trex-tgn.cisco.com/trex/release/$TREX_VER.tar.gz \
+ && wget --no-cache --no-check-certificate https://trex-tgn.cisco.com/trex/release/$TREX_VER.tar.gz \
&& tar xzf $TREX_VER.tar.gz -C /opt/trex \
&& rm -f /$TREX_VER.tar.gz \
&& rm -f /opt/trex/$TREX_VER/trex_client_$TREX_VER.tar.gz \
- && cp -a /opt/trex/$TREX_VER/automation/trex_control_plane/interactive/trex /usr/local/lib/python2.7/dist-packages/ \
+ && cp -a /opt/trex/$TREX_VER/automation/trex_control_plane/interactive/trex /usr/local/lib/python3.8/dist-packages/ \
&& rm -rf /opt/trex/$TREX_VER/automation/trex_control_plane/interactive/trex \
- && sed -i -e "s/2048 /512 /" -e "s/2048\"/512\"/" /opt/trex/$TREX_VER/trex-cfg \
- && apt-get remove -y python-pip \
&& wget https://bootstrap.pypa.io/get-pip.py \
- && python get-pip.py \
- && pip install -U pbr \
- && pip install -U setuptools \
- && cd / \
+ && python3 get-pip.py \
+ && pip3 install -U pbr \
+ && pip3 install -U setuptools \
+ && cd /opt \
+ # Note: do not clone with --depth 1 as it will cause pbr to fail extracting the nfvbench version
+ # from the git tag
&& git clone https://gerrit.opnfv.org/gerrit/nfvbench \
- && cd /nfvbench && pip install -e . \
+ && cd nfvbench && pip3 install -e . \
&& wget -O nfvbenchvm-$VM_IMAGE_VER.qcow2 http://artifacts.opnfv.org/nfvbench/images/nfvbenchvm_centos-$VM_IMAGE_VER.qcow2 \
- && python ./docker/cleanup_generators.py \
- && rm -rf /nfvbench/.git \
- && apt-get remove -y wget git \
+ # Override Xtesting testcases.yaml file by NFVbench default one
+ && cp xtesting/testcases.yaml /usr/local/lib/python3.8/dist-packages/xtesting/ci/testcases.yaml \
+ && python3 ./docker/cleanup_generators.py \
+ && rm -rf /opt/nfvbench/.git \
+ # Symlink for retrocompatibility 4.x
+ && ln -s /opt/nfvbench /nfvbench \
+ && apt-get remove -y wget git python3-dev libpython3.8-dev gcc \
&& apt-get autoremove -y && apt-get clean && rm -rf /var/lib/apt/lists/*
ENV TREX_EXT_LIBS "/opt/trex/$TREX_VER/external_libs"
-ENTRYPOINT ["/nfvbench/docker/nfvbench-entrypoint.sh"]
+ENTRYPOINT ["/opt/nfvbench/docker/nfvbench-entrypoint.sh"]
diff --git a/docker/cleanup_generators.py b/docker/cleanup_generators.py
index db68dcb..c555d59 100755
--- a/docker/cleanup_generators.py
+++ b/docker/cleanup_generators.py
@@ -40,8 +40,8 @@ def remove_unused_libs(path, files):
else:
os.remove(f)
except OSError:
- print "Skipped file:"
- print f
+ print("Skipped file:")
+ print(f)
continue
@@ -65,14 +65,14 @@ if __name__ == "__main__":
versions = os.listdir(TREX_OPT)
for version in versions:
trex_path = os.path.join(TREX_OPT, version)
- print 'Cleaning TRex', version
+ print('Cleaning TRex', version)
try:
size_before = get_dir_size(trex_path)
remove_unused_libs(trex_path, TREX_UNUSED)
size_after = get_dir_size(trex_path)
- print '==== Saved Space ===='
- print size_before - size_after
+ print('==== Saved Space ====')
+ print(size_before - size_after)
except OSError:
import traceback
- print traceback.print_exc()
- print 'Cleanup was not finished.'
+ print(traceback.print_exc())
+ print('Cleanup was not finished.')
diff --git a/docker/nfvbench-entrypoint.sh b/docker/nfvbench-entrypoint.sh
index a7195a3..913e5ba 100755
--- a/docker/nfvbench-entrypoint.sh
+++ b/docker/nfvbench-entrypoint.sh
@@ -13,9 +13,17 @@
# License for the specific language governing permissions and limitations
# under the License.
#
-
-if [ -z "$1" ] || [ $1 != 'start_rest_server' ]; then
+if [ -z "$1" ] || ([ $1 != 'start_rest_server' ] && [ $1 != 'run_tests' ] && [ $1 != 'zip_campaign' ]); then
tail -f /dev/null
+elif [ $1 == 'run_tests' ]; then
+ PARAMS=""
+ for var in "${@:2}"
+ do
+ PARAMS+="$var "
+ done
+ eval "run_tests $PARAMS"
+elif [ $1 == 'zip_campaign' ]; then
+ zip_campaign
else
PARAMS="--server"
if [ -n "$HOST" ]; then
diff --git a/docs/Makefile b/docs/Makefile
index 2d4ff46..d4bb2cb 100644
--- a/docs/Makefile
+++ b/docs/Makefile
@@ -1,225 +1,20 @@
-# Makefile for Sphinx documentation
+# Minimal makefile for Sphinx documentation
#
-# You can set these variables from the command line.
-SPHINXOPTS =
-SPHINXBUILD = sphinx-build
-PAPER =
+# You can set these variables from the command line, and also
+# from the environment for the first two.
+SPHINXOPTS ?=
+SPHINXBUILD ?= sphinx-build
+SOURCEDIR = .
BUILDDIR = _build
-# Internal variables.
-PAPEROPT_a4 = -D latex_paper_size=a4
-PAPEROPT_letter = -D latex_paper_size=letter
-ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) testing/user/userguide
-# the i18n builder cannot share the environment and doctrees with the others
-I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) testing/user/userguide
-
-.PHONY: help
+# Put it first so that "make" without argument is like "make help".
help:
- @echo "Please use \`make <target>' where <target> is one of"
- @echo " html to make standalone HTML files"
- @echo " dirhtml to make HTML files named index.html in directories"
- @echo " singlehtml to make a single large HTML file"
- @echo " pickle to make pickle files"
- @echo " json to make JSON files"
- @echo " htmlhelp to make HTML files and a HTML help project"
- @echo " qthelp to make HTML files and a qthelp project"
- @echo " applehelp to make an Apple Help Book"
- @echo " devhelp to make HTML files and a Devhelp project"
- @echo " epub to make an epub"
- @echo " epub3 to make an epub3"
- @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
- @echo " latexpdf to make LaTeX files and run them through pdflatex"
- @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
- @echo " text to make text files"
- @echo " man to make manual pages"
- @echo " texinfo to make Texinfo files"
- @echo " info to make Texinfo files and run them through makeinfo"
- @echo " gettext to make PO message catalogs"
- @echo " changes to make an overview of all changed/added/deprecated items"
- @echo " xml to make Docutils-native XML files"
- @echo " pseudoxml to make pseudoxml-XML files for display purposes"
- @echo " linkcheck to check all external links for integrity"
- @echo " doctest to run all doctests embedded in the documentation (if enabled)"
- @echo " coverage to run coverage check of the documentation (if enabled)"
- @echo " dummy to check syntax errors of document sources"
-
-.PHONY: clean
-clean:
- rm -rf $(BUILDDIR)/*
-
-.PHONY: html
-html:
- $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
- @echo
- @echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
-
-.PHONY: dirhtml
-dirhtml:
- $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
- @echo
- @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
-
-.PHONY: singlehtml
-singlehtml:
- $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
- @echo
- @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
-
-.PHONY: pickle
-pickle:
- $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
- @echo
- @echo "Build finished; now you can process the pickle files."
-
-.PHONY: json
-json:
- $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
- @echo
- @echo "Build finished; now you can process the JSON files."
-
-.PHONY: htmlhelp
-htmlhelp:
- $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
- @echo
- @echo "Build finished; now you can run HTML Help Workshop with the" \
- ".hhp project file in $(BUILDDIR)/htmlhelp."
-
-.PHONY: qthelp
-qthelp:
- $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
- @echo
- @echo "Build finished; now you can run "qcollectiongenerator" with the" \
- ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
- @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/NFVBench.qhcp"
- @echo "To view the help file:"
- @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/NFVBench.qhc"
-
-.PHONY: applehelp
-applehelp:
- $(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp
- @echo
- @echo "Build finished. The help book is in $(BUILDDIR)/applehelp."
- @echo "N.B. You won't be able to view it unless you put it in" \
- "~/Library/Documentation/Help or install it in your application" \
- "bundle."
-
-.PHONY: devhelp
-devhelp:
- $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
- @echo
- @echo "Build finished."
- @echo "To view the help file:"
- @echo "# mkdir -p $$HOME/.local/share/devhelp/NFVBench"
- @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/NFVBench"
- @echo "# devhelp"
-
-.PHONY: epub
-epub:
- $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
- @echo
- @echo "Build finished. The epub file is in $(BUILDDIR)/epub."
-
-.PHONY: epub3
-epub3:
- $(SPHINXBUILD) -b epub3 $(ALLSPHINXOPTS) $(BUILDDIR)/epub3
- @echo
- @echo "Build finished. The epub3 file is in $(BUILDDIR)/epub3."
-
-.PHONY: latex
-latex:
- $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
- @echo
- @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
- @echo "Run \`make' in that directory to run these through (pdf)latex" \
- "(use \`make latexpdf' here to do that automatically)."
-
-.PHONY: latexpdf
-latexpdf:
- $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
- @echo "Running LaTeX files through pdflatex..."
- $(MAKE) -C $(BUILDDIR)/latex all-pdf
- @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
-
-.PHONY: latexpdfja
-latexpdfja:
- $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
- @echo "Running LaTeX files through platex and dvipdfmx..."
- $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
- @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
-
-.PHONY: text
-text:
- $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
- @echo
- @echo "Build finished. The text files are in $(BUILDDIR)/text."
-
-.PHONY: man
-man:
- $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
- @echo
- @echo "Build finished. The manual pages are in $(BUILDDIR)/man."
-
-.PHONY: texinfo
-texinfo:
- $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
- @echo
- @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
- @echo "Run \`make' in that directory to run these through makeinfo" \
- "(use \`make info' here to do that automatically)."
-
-.PHONY: info
-info:
- $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
- @echo "Running Texinfo files through makeinfo..."
- make -C $(BUILDDIR)/texinfo info
- @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
-
-.PHONY: gettext
-gettext:
- $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
- @echo
- @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
-
-.PHONY: changes
-changes:
- $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
- @echo
- @echo "The overview file is in $(BUILDDIR)/changes."
-
-.PHONY: linkcheck
-linkcheck:
- $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
- @echo
- @echo "Link check complete; look for any errors in the above output " \
- "or in $(BUILDDIR)/linkcheck/output.txt."
-
-.PHONY: doctest
-doctest:
- $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
- @echo "Testing of doctests in the sources finished, look at the " \
- "results in $(BUILDDIR)/doctest/output.txt."
-
-.PHONY: coverage
-coverage:
- $(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage
- @echo "Testing of coverage in the sources finished, look at the " \
- "results in $(BUILDDIR)/coverage/python.txt."
-
-.PHONY: xml
-xml:
- $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
- @echo
- @echo "Build finished. The XML files are in $(BUILDDIR)/xml."
+ @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
-.PHONY: pseudoxml
-pseudoxml:
- $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
- @echo
- @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."
+.PHONY: help Makefile
-.PHONY: dummy
-dummy:
- $(SPHINXBUILD) -b dummy $(ALLSPHINXOPTS) $(BUILDDIR)/dummy
- @echo
- @echo "Build finished. Dummy builder generates no files."
+# Catch-all target: route all unknown targets to Sphinx using the new
+# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
+%: Makefile
+ @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
diff --git a/docs/conf.py b/docs/conf.py
index eb12e74..cf53232 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -1 +1,68 @@
-from docs_conf.conf import * # noqa: F401,F403
+# Copyright 2016 - 2023, Cisco Systems, Inc. and the NFVbench project contributors
+# SPDX-License-Identifier: Apache-2.0
+
+# Configuration file for the Sphinx documentation builder.
+#
+# This file only contains a selection of the most common options. For a full
+# list see the documentation:
+# https://www.sphinx-doc.org/en/master/usage/configuration.html
+
+import pbr.version
+
+
+# -- Path setup --------------------------------------------------------------
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+#
+# import os
+# import sys
+# sys.path.insert(0, os.path.abspath('.'))
+
+
+# -- Project information -----------------------------------------------------
+
+project = 'NFVbench'
+copyright = '2016 - 2023, Cisco Systems, Inc. and the NFVbench project contributors'
+author = 'Cisco Systems, Inc. and the NFVbench project contributors'
+
+# -- Project version ---------------------------------------------------------
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.
+version = pbr.version.VersionInfo(project).version_string()
+# The full version, including alpha/beta/rc tags.
+release = pbr.version.VersionInfo(project).version_string_with_vcs()
+
+# -- General configuration ---------------------------------------------------
+
+# Add any Sphinx extension module names here, as strings. They can be
+# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
+# ones.
+extensions = [
+]
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+# This pattern also affects html_static_path and html_extra_path.
+exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
+
+
+# -- Options for HTML output -------------------------------------------------
+
+# The theme to use for HTML and HTML Help pages. See the documentation for
+# a list of builtin themes.
+#
+html_theme = 'piccolo_theme'
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['_static']
diff --git a/docs/conf.yaml b/docs/conf.yaml
deleted file mode 100644
index 4e26a1c..0000000
--- a/docs/conf.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-project_cfg: opnfv
-project: NFVBENCH
diff --git a/docs/development/building/build.rst b/docs/developer/building.rst
index 1b6bc0a..00b8654 100644
--- a/docs/development/building/build.rst
+++ b/docs/developer/building.rst
@@ -4,7 +4,7 @@
.. http://creativecommons.org/licenses/by/4.0
.. (c) Cisco Systems, Inc
-Building containers and VM images
+Building Containers and VM Images
=================================
NFVbench is delivered as Docker container which is built using the Dockerfile under the docker directory.
@@ -14,6 +14,8 @@ This container includes the following parts:
- NFVbench orchestration
- NFVbench test VM (qcow2)
+.. _nfvbench-artefact-versioning:
+
Versioning
----------
These 3 parts are versioned independently and the Dockerfile will determine the combination of versions that
@@ -23,7 +25,7 @@ The NFVbench version is controlled by the git tag that conforms to the semver ve
This tag controls the version of the Dockerfile used for building the container.
The TRex version is controlled by the TREX_VER variable in Dockerfile (e.g. ENV TREX_VER "v2.56").
-TRex is installed in container from https://trex-tgn.cisco.com/trex/release/
+TRex is installed in container from https://github.com/cisco-system-traffic-generator/trex-core/releases
The Test VM version is controlled by the VM_IMAGE_VER variable in Dockerfile (e.g. ENV VM_IMAGE_VER "0.8").
The VM is extracted from google storage (http://artifacts.opnfv.org)
diff --git a/docs/development/design/design.rst b/docs/developer/design/design.rst
index 75b90f8..43011ad 100644
--- a/docs/development/design/design.rst
+++ b/docs/developer/design/design.rst
@@ -1,19 +1,15 @@
-
-
-.. contents::
- :depth: 3
- :local:
-
.. This work is licensed under a Creative Commons Attribution 4.0 International
.. License.
.. http://creativecommons.org/licenses/by/4.0
.. (c) Cisco Systems, Inc
-Introduction
-------------
+*******************
+NFVbench components
+*******************
NFVbench can be decomposed in the following components:
+
- Configuration
- Orchestration:
@@ -22,13 +18,14 @@ NFVbench can be decomposed in the following components:
- Results analysis
Configuration
--------------
+=============
This component is in charge of getting the configuration options from the user and consolidate them with
the default configuration into a running configuration.
default configuration + user configuration options = running configuration
User configuration can come from:
+
- CLI configuration shortcut arguments (e.g --frame-size)
- CLI configuration file (--config [file])
- CLI configuration string (--config [string])
@@ -36,6 +33,7 @@ User configuration can come from:
- custom platform pluging
The precedence order for configuration is (from highest precedence to lowest precedence)
+
- CLI configuration or REST configuration
- custom platform plugin
- default configuration
@@ -46,7 +44,7 @@ with default platform options which can be either hardcoded or calculated at run
A custom platform plugin class is a child of the parent class nfvbench.config_plugin.ConfigPlugin.
Orchestration
--------------
+=============
Once the configuration is settled, benchmark orchestration is managed by the ChainRunner class (nfvbench.chain_runner.ChainRunner).
The chain runner will take care of orchestrating the staging, traffic generation and results analysis.
@@ -63,6 +61,7 @@ Traffic Generation
------------------
The traffic generation component is in charge of contrilling the TRex traffic generator using its python API.
It includes tasks such as:
+
- traffic check end to end to make sure the packet path is clear in both directions before starting a benchmark
- programming the TRex traffic flows based on requested parameters
- fixed rate control
diff --git a/docs/development/design/index.rst b/docs/developer/design/index.rst
index 0500ca2..4c52f98 100644
--- a/docs/development/design/index.rst
+++ b/docs/developer/design/index.rst
@@ -3,13 +3,14 @@
.. http://creativecommons.org/licenses/by/4.0
.. (c) Cisco Systems, Inc
-===============================
-OPNFV NFVbench Euphrates Design
-===============================
+=====================
+NFVbench Design Notes
+=====================
.. toctree::
:maxdepth: 2
+ overview
design
versioning
traffic_desc
diff --git a/docs/development/design/ndrpdr.rst b/docs/developer/design/ndrpdr.rst
index dd769c0..dd769c0 100644
--- a/docs/development/design/ndrpdr.rst
+++ b/docs/developer/design/ndrpdr.rst
diff --git a/docs/development/overview/overview.rst b/docs/developer/design/overview.rst
index 26e19d1..9876d62 100644
--- a/docs/development/overview/overview.rst
+++ b/docs/developer/design/overview.rst
@@ -3,12 +3,9 @@
.. http://creativecommons.org/licenses/by/4.0
.. (c) Cisco Systems, Inc
-.. contents::
- :depth: 3
- :local:
+Overview
+--------
-Introduction
-----------------
NFVbench is a python application that is designed to run in a compact and portable format inside a container and on production pods.
As such it only uses open sourec software with minimal hardware requirements (just a NIC card that is DPDK compatible).
Traffic generation is handled by TRex on 2 physical ports (2x10G or higher) forming traffic loops up to VNF level and following
@@ -18,6 +15,7 @@ to VNF(s) and back.
Configuration of benchmarks is through a yaml configuraton file and command line arguments.
Results are available in different formats:
+
- text output with tabular results
- json result in file or in REST reply (most detailed)
diff --git a/docs/development/design/traffic_desc.rst b/docs/developer/design/traffic_desc.rst
index bbd31a6..d6bbb6b 100644
--- a/docs/development/design/traffic_desc.rst
+++ b/docs/developer/design/traffic_desc.rst
@@ -61,6 +61,7 @@ size of the L2 header - including the VLAN tag if applicable.
IMIX Support
------------
In the case of IMIX, each direction is made of 4 streams:
+
- 1 latency stream
- 1 stream for each IMIX frame size
diff --git a/docs/development/design/versioning.rst b/docs/developer/design/versioning.rst
index 40e70f2..40e70f2 100644
--- a/docs/development/design/versioning.rst
+++ b/docs/developer/design/versioning.rst
diff --git a/docs/development/index.rst b/docs/developer/index.rst
index 0477154..d9bf844 100644
--- a/docs/development/index.rst
+++ b/docs/developer/index.rst
@@ -3,9 +3,14 @@
.. http://creativecommons.org/licenses/by/4.0
.. (c) Cisco Systems, Inc
+************************
+NFVbench Developer Guide
+************************
+
.. toctree::
:maxdepth: 3
- overview/index
+ building
+ nfvbenchvm
+ testing-nfvbench
design/index
- building/index
diff --git a/docs/developer/nfvbenchvm.rst b/docs/developer/nfvbenchvm.rst
new file mode 100644
index 0000000..5d6166f
--- /dev/null
+++ b/docs/developer/nfvbenchvm.rst
@@ -0,0 +1,365 @@
+.. Copyright 2016 - 2023, Cisco Systems, Inc. and the NFVbench project contributors
+.. SPDX-License-Identifier: CC-BY-4.0
+
+NFVBENCH VM IMAGES FOR OPENSTACK
+++++++++++++++++++++++++++++++++
+
+This repo will build two centos 7 images with:
+ - testpmd and VPP installed for loop VM use case
+ - NFVbench and TRex installed for generator VM use case
+
+These VMs will come with a pre-canned user/password: nfvbench/nfvbench
+
+BUILD INSTRUCTIONS
+==================
+
+Pre-requisites
+--------------
+- must run on Linux
+- the following packages must be installed prior to using this script:
+ - python3 (+ python3-venv on Ubuntu)
+ - python3-pip
+ - git
+ - qemu-img (CentOs) or qemu-utils (Ubuntu)
+ - kpartx
+
+.. note:: The image build process is based on `diskimage-builder
+ <https://docs.openstack.org/diskimage-builder/latest/index.html>`_
+ that will be installed in a Python virtual environment by nfvbenchvm
+ build script build-image.sh.
+
+.. note:: build-image.sh uses the `gsutil <https://pypi.org/project/gsutil/>`_
+ tool to interact with Google cloud storage (to check if the images
+ exist and to upload the images). This is normally only needed in the
+ context of OPNFV build infrastructure, and build-image.sh can be used
+ without that tool in development environments.
+
+Build the image
+---------------
+- cd dib
+- update the version number for the image (if needed) by modifying __version__ in build-image.sh
+- setup your http_proxy if needed
+- run ``build-image.sh`` to build the images. A few examples:
+
+ - to build all the images and publish the code to Google cloud storage:
+ - ``bash build-image.sh``
+ - to build and publish only the loop VM:
+ - ``bash build-image.sh -l``
+ - to build and publish only the generator VM:
+ - ``bash build-image.sh -g``
+ - to build the generator VM without publishing it:
+ - ``bash build-image.sh -gv``
+
+.. note:: Run ``bash build-image.sh`` -h to see all options available.
+
+.. note:: By default, the generator VM image embeds the latest nfvbench code
+ found at the time of the build on the master branch of NFVbench Git
+ repository on OPNFV Gerrit instance (latest commit).
+
+ During development phases, it is also possible to build the image with
+ all the committed changes found in the current working copy of
+ nfvbench (local code). To do that, run the image build with the ``-s``
+ option, for instance: ``bash build-image.sh -gvs``.
+
+ In that case, the version of the generator VM image will be extended
+ with nfvbench development version number to be able to distinguish the
+ development images from the latest published image.
+
+LOOP VM IMAGE INSTANCE AND CONFIG
+=================================
+
+Interface Requirements
+----------------------
+The instance must be launched using OpenStack with 2 network interfaces.
+For best performance, it should use a flavor with:
+
+- 2 vCPU
+- 4 GB RAM
+- cpu pinning set to exclusive
+
+Auto-configuration
+------------------
+nfvbench VM will automatically find the two virtual interfaces to use, and use the forwarder specifed in the config file.
+
+In the case testpmd is used, testpmd will be launched with mac forwarding mode where the destination macs rewritten according to the config file.
+
+In the case VPP is used, VPP will set up a L3 router, and forwarding traffic from one port to the other.
+
+nfvbenchvm Config
+-----------------
+nfvbenchvm config file is located at ``/etc/nfvbenchvm.conf``.
+
+.. code-block:: bash
+
+ FORWARDER=testpmd
+ INTF_MAC1=FA:16:3E:A2:30:41
+ INTF_MAC2=FA:16:3E:10:DA:10
+ TG_MAC1=00:10:94:00:0A:00
+ TG_MAC2=00:11:94:00:0A:00
+ VNF_GATEWAY1_CIDR=1.1.0.2/8
+ VNF_GATEWAY2_CIDR=2.2.0.2/8
+ TG_NET1=10.0.0.0/8
+ TG_NET2=20.0.0.0/8
+ TG_GATEWAY1_IP=1.1.0.100
+ TG_GATEWAY2_IP=2.2.0.100
+
+
+Launching nfvbenchvm VM
+-----------------------
+
+Normally this image will be used together with NFVBench, and the required configurations will be automatically generated and pushed to VM by NFVBench. If launched manually, no forwarder will be run. Users will have the full control to run either testpmd or VPP via VNC console.
+
+To check if testpmd is running, you can run this command in VNC console:
+
+.. code-block:: bash
+
+ sudo screen -r testpmd
+
+To check if VPP is running, you can run this command in VNC console:
+
+.. code-block:: bash
+
+ service vpp status
+
+
+Hardcoded Username and Password
+--------------------------------
+- Username: nfvbench
+- Password: nfvbench
+
+
+GENERATOR IMAGE INSTANCE AND CONFIG
+===================================
+
+Pre-requisites
+--------------
+To use openstack APIs, NFVbench generator VM will use `clouds.yaml` file as openstack configuration.
+The OpenStack clouds configuration from clouds.yaml file to use.
+clouds.yaml file must be in one of the following paths:
+- ~/.config/openstack
+- /etc/openstack
+
+Example of `clouds.yaml`:
+
+.. code-block:: yaml
+
+ clouds:
+ devstack:
+ auth:
+ auth_url: http://192.168.122.10:35357/
+ project_name: demo
+ username: demo
+ password: 0penstack
+ region_name: RegionOne
+
+.. note:: Add `CLOUD_DETAIL` property with the accurate value for your openstack configuration (`devstack` in the above example) in ``/etc/nfvbenchvm.conf``
+
+Interface Requirements
+----------------------
+The instance must be launched using OpenStack with 2 network interfaces for dataplane traffic (using SR-IOV function) and 1 management interface to control nfvbench.
+For best performance, it should use network interfaces for dataplane traffic with a `vnic_type` to `direct-physical` (or `direct` if physical function is not possible)
+and a flavor with:
+
+- 6 vCPU
+- 8 GB RAM
+- cpu pinning set to exclusive
+
+.. note:: For the management interface: any interface type can be used. This interface required a routable IP (through floating IP or direct) and an access to the openstack APIs.
+.. note:: CPU pinning: 1 core dedicated for guest OS and NFVbench process, other provided cores are used by TRex
+
+Template of a genarator profile using CPU pinning:
+
+.. code-block:: bash
+
+ generator_profile:
+ - name: {{name}}
+ tool: {{tool}}
+ ip: {{ip}}
+ zmq_pub_port: {{zmq_pub_port}}
+ zmq_rpc_port: {{zmq_rpc_port}}
+ software_mode: {{software_mode}}
+ cores: {{CORES}}
+ platform:
+ master_thread_id: '0'
+ latency_thread_id: '1'
+ dual_if:
+ - socket: 0
+ threads: [{{CORE_THREADS}}]
+
+ interfaces:
+ - port: 0
+ pci: "{{PCI_ADDRESS_1}}"
+ switch:
+ - port: 1
+ pci: "{{PCI_ADDRESS_2}}"
+ switch:
+ intf_speed:
+
+.. note:: `CORE_THREADS` value is determined automatically based on the cores available on the VM starting from 2 to last worker core available.
+
+Auto-configuration
+------------------
+nfvbench VM will automatically find the two virtual interfaces to use for dataplane based on MAC addresses or openstack port name (see config part below).
+This applies to the management interface as well.
+
+nfvbenchvm Config
+-----------------
+nfvbenchvm config file is located at ``/etc/nfvbenchvm.conf``.
+
+Example of configuration:
+
+.. code-block:: bash
+
+ ACTION=e2e
+ LOOPBACK_INTF_MAC1=FA:16:3E:A2:30:41
+ LOOPBACK_INTF_MAC2=FA:16:3E:10:DA:10
+ E2E_INTF_MAC1=FA:16:3E:B0:E2:43
+ E2E_INTF_MAC2=FA:16:3E:D3:6A:FC
+
+.. note:: `ACTION` parameter is not mandatory but will permit to start NFVbench with the accurate ports (loopback or e2e).
+.. note:: Set of MAC parameters cannot be used in parallel as only one NFVbench/TRex process is running.
+.. note:: Switching from `loopback` to `e2e` action can be done manually using `/nfvbench/start-nfvbench.sh <action>` with the accurate keyword for `action` parameter. This script will restart NFVbench with the good set of MAC.
+
+nfvbenchvm config file with management interface:
+
+.. code-block:: bash
+
+ ACTION=e2e
+ LOOPBACK_INTF_MAC1=FA:16:3E:A2:30:41
+ LOOPBACK_INTF_MAC2=FA:16:3E:10:DA:10
+ INTF_MAC_MGMT=FA:16:3E:06:11:8A
+ INTF_MGMT_CIDR=172.20.56.228/2
+ INTF_MGMT_IP_GW=172.20.56.225
+ INTF_MGMT_MTU=1500
+
+.. note:: `INTF_MGMT_IP_GW` and `INTF_MGMT_CIDR` parameters are used by the VM to automatically configure virtual interface and route to allow an external access through SSH.
+
+.. note:: ``INTF_MGMT_MTU`` allows to specify the MTU of the management
+ interface in bytes.
+
+ If ``INTF_MGMT_MTU`` is not specified, the MTU will be configured to
+ the conservative value of 1500: this will reduce the risk to get an
+ unmanageable VM.
+
+ ``INTF_MGMT_MTU`` can also be set to the special value ``auto``: in
+ that case, the MTU will not be configured and it will keep the value
+ set by the hypervisor (default nfvbench behavior up to version
+ 5.0.3).
+
+Using pre-created direct-physical ports on openstack, mac addresses value are only known when VM is deployed. In this case, you can pass the port name in config:
+
+.. code-block:: bash
+
+ LOOPBACK_PORT_NAME1=nfvbench-pf1
+ LOOPBACK_PORT_NAME2=nfvbench-pf2
+ E2E_PORT_NAME1=nfvbench-pf1
+ E2E_PORT_NAME1=nfvbench-pf3
+ INTF_MAC_MGMT=FA:16:3E:06:11:8A
+ INTF_MGMT_CIDR=172.20.56.228/2
+ INTF_MGMT_IP_GW=172.20.56.225
+ DNS_SERVERS=8.8.8.8,dns.server.com
+
+.. note:: A management interface is required to automatically find the virtual interface to use according to the MAC address provided (see `INTF_MAC_MGMT` parameter).
+.. note:: NFVbench VM will call openstack API through the management interface to retrieve mac address for these ports
+.. note:: If openstack API required a host name resolution, add the parameter DNS_SERVERS to add IP or DNS server names (multiple servers can be added separated by a `,`)
+
+Control nfvbenchvm VM and run test
+----------------------------------
+
+By default, NFVbench will be started in server mode (`--server`) and will act as an API.
+
+NFVbench VM will be accessible through SSH or HTTP using the management interface IP.
+
+NFVbench API endpoint is : `http://<management_ip>:<port>`
+
+.. note:: by default port value is 7555
+
+Get NFVbench status
+^^^^^^^^^^^^^^^^^^^
+
+To check NFVbench is up and running use REST request:
+
+.. code-block:: bash
+
+ curl -XGET '<management_ip>:<port>/status'
+
+Example of answer:
+
+.. code-block:: bash
+
+ {
+ "error_message": "nfvbench run still pending",
+ "status": "PENDING"
+ }
+
+Start NFVbench test
+^^^^^^^^^^^^^^^^^^^
+
+To start a test run using NFVbench API use this type of REST request:
+
+.. code-block:: bash
+
+ curl -XPOST '<management_ip>:<port>/start_run' -H "Content-Type: application/json" -d @nfvbenchconfig.json
+
+Example of return when the submission is successful:
+
+.. code-block:: bash
+
+ {
+ "error_message": "NFVbench run still pending",
+ "request_id": "42cccb7effdc43caa47f722f0ca8ec96",
+ "status": "PENDING"
+ }
+
+
+Start NFVbench test using Xtesting
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+To start a test run using Xtesting python library and NFVbench API use this type of command on the VM:
+
+.. code-block:: bash
+
+ run_tests -t nfvbench-demo
+
+.. note:: `-t` option determine which test case to be runned by Xtesting
+ (see `xtesting/testcases.yaml` file content to see available list of test cases)
+
+
+Connect to the VM using SSH keypair
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+If a key is provided at VM creation you can use it to log on the VM using `cloud-user` username:
+
+.. code-block:: bash
+
+ ssh -i key.pem cloud-user@<management_ip>
+
+
+Connect to VM using SSH username/password
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+VM is accessible over SSH using the hardcoded username and password (see below):
+
+.. code-block:: bash
+
+ ssh nfvbench@<management_ip>
+
+
+Launching nfvbenchvm VM
+-----------------------
+
+Normally this image will be deployed using Ansible role, and the required configurations will be automatically generated and pushed to VM by Ansible.
+If launched manually, users will have the full control to configure and run NFVbench via VNC console.
+
+To check if NFVbench is running, you can run this command in VNC console:
+
+.. code-block:: bash
+
+ sudo screen -r nfvbench
+
+
+Hardcoded Username and Password
+--------------------------------
+- Username: nfvbench
+- Password: nfvbench
+
diff --git a/docs/developer/testing-nfvbench.rst b/docs/developer/testing-nfvbench.rst
new file mode 100644
index 0000000..fd6c6f7
--- /dev/null
+++ b/docs/developer/testing-nfvbench.rst
@@ -0,0 +1,91 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. SPDX-License-Identifier: CC-BY-4.0
+
+================
+Testing NFVbench
+================
+
+tox
+===
+
+NFVbench project uses `tox`_ to orchestrate the testing of the code base:
+
+* run unit tests
+* check code style
+* run linter
+* check links in the docs
+
+In addition to testing, tox is also used to generate the documentation in HTML
+format.
+
+What tox should do is specified in a ``tox.ini`` file located at the project root.
+
+tox is used in continuous integration: all the actions performed by tox must
+succeed before a patchset can be merged. As a developer, it is also useful to
+run tox locally to detect and fix the issues before pushing the code for review.
+
+.. _tox: https://tox.wiki/en/latest/
+
+
+
+Using tox on a developer's machine
+==================================
+
+Requirement: |python-version|
+-----------------------------
+
+.. |python-version| replace:: Python 3.8
+
+The current version of Python used by NFVbench is |python-version|. In
+particular, this means that |python-version| is used:
+
+* by tox in CI
+* in nfvbench Docker image
+* in nfvbench traffic generator VM image
+
+|python-version| is needed to be able to run tox locally. If it is not
+available through the package manager, it can be installed using `pyenv`_. In
+that case, it will also be necessary to install the `pyenv-virtualenv`_ plugin.
+Refer to the documentation of those projects for installation instructions.
+
+.. _pyenv: https://github.com/pyenv/pyenv
+.. _pyenv-virtualenv: https://github.com/pyenv/pyenv-virtualenv
+
+
+tox installation
+----------------
+
+Install tox with::
+
+ $ pip install tox==3.21.4
+
+.. note:: tox 3.21.4 is the version that comes with Ubuntu 22.04 and that can be
+ found on gerrit.opnfv.org build servers.
+
+
+Running tox
+-----------
+
+In nfvbench root directory, simply run tox with::
+
+ $ tox
+
+If all goes well, tox shows a green summary such as::
+
+ py38: commands succeeded
+ pep8: commands succeeded
+ lint: commands succeeded
+ docs: commands succeeded
+ docs-linkcheck: commands succeeded
+ congratulations :)
+
+It is possible to run only a subset of tox *environments* with the ``-e``
+command line option. For instance, to check the code style only, do::
+
+ $ tox -e pep8
+
+Each tox *environment* uses a dedicated python virtual environment. The
+``-r`` command line option can be used to force the recreation of the virtual
+environment(s). For instance::
+
+ $ tox -r
diff --git a/docs/development/building/index.rst b/docs/development/building/index.rst
deleted file mode 100644
index 8b9d786..0000000
--- a/docs/development/building/index.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International
-.. License.
-.. http://creativecommons.org/licenses/by/4.0
-.. (c) Cisco Systems, Inc
-
-===============================
-OPNFV NFVbench Euphrates Design
-===============================
-
-.. toctree::
- :maxdepth: 2
-
- build
-
diff --git a/docs/development/overview/index.rst b/docs/development/overview/index.rst
deleted file mode 100644
index ce99621..0000000
--- a/docs/development/overview/index.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International
-.. License.
-.. http://creativecommons.org/licenses/by/4.0
-.. (c) Cisco Systems, Inc
-
-=============================================
-OPNFV NFVbench Euphrates Overview
-=============================================
-
-.. toctree::
- :maxdepth: 1
-
- overview
diff --git a/docs/index.rst b/docs/index.rst
index 720b670..1339a7f 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -3,9 +3,13 @@
.. http://creativecommons.org/licenses/by/4.0
.. (c) Cisco Systems, Inc
+
+NFVbench |release| Documentation
+================================
+
.. toctree::
- :maxdepth: 1
+ :maxdepth: 2
- development/index
- release/release-notes/index
- testing/index
+ release-notes/index
+ user/index
+ developer/index
diff --git a/docs/make.bat b/docs/make.bat
new file mode 100644
index 0000000..153be5e
--- /dev/null
+++ b/docs/make.bat
@@ -0,0 +1,35 @@
+@ECHO OFF
+
+pushd %~dp0
+
+REM Command file for Sphinx documentation
+
+if "%SPHINXBUILD%" == "" (
+ set SPHINXBUILD=sphinx-build
+)
+set SOURCEDIR=.
+set BUILDDIR=_build
+
+if "%1" == "" goto help
+
+%SPHINXBUILD% >NUL 2>NUL
+if errorlevel 9009 (
+ echo.
+ echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
+ echo.installed, then set the SPHINXBUILD environment variable to point
+ echo.to the full path of the 'sphinx-build' executable. Alternatively you
+ echo.may add the Sphinx directory to PATH.
+ echo.
+ echo.If you don't have Sphinx installed, grab it from
+ echo.https://www.sphinx-doc.org/
+ exit /b 1
+)
+
+%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
+goto end
+
+:help
+%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
+
+:end
+popd
diff --git a/docs/release/release-notes/index.rst b/docs/release-notes/index.rst
index 12acbab..827c674 100644
--- a/docs/release/release-notes/index.rst
+++ b/docs/release-notes/index.rst
@@ -3,11 +3,12 @@
.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0
-**********************
-NFVbench Release Notes
-**********************
+*************
+Release Notes
+*************
.. toctree::
:maxdepth: 1
- release-notes
+ nfvbench-release-notes
+ nfvbenchvm-release-notes
diff --git a/docs/release/release-notes/release-notes.rst b/docs/release-notes/nfvbench-release-notes.rst
index 12c1b40..c1c52d4 100644
--- a/docs/release/release-notes/release-notes.rst
+++ b/docs/release-notes/nfvbench-release-notes.rst
@@ -2,8 +2,18 @@
.. http://creativecommons.org/licenses/by/4.0
.. (c) Cisco Systems, Inc
-RELEASE NOTES
-+++++++++++++
+NFVbench Release Notes
+++++++++++++++++++++++
+
+Release 3.6.2
+=============
+
+- NFVBENCH-152 Add service_mode method for debugging purpose
+- NFVBENCH-150 Add support for VXLAN latency
+- NFVBENCH-146 Add cache_size option
+- NFVBENCH-151 Allocate hugepages on two NUMAs in nfvbenchvm
+- NFVBENCH-149 Negative latency exception during NDR/PDR search
+- NFVBENCH-148 Increase the waiting time based on # of instances
Release 3.5.1
=============
diff --git a/docs/release-notes/nfvbenchvm-release-notes.rst b/docs/release-notes/nfvbenchvm-release-notes.rst
new file mode 100644
index 0000000..234a086
--- /dev/null
+++ b/docs/release-notes/nfvbenchvm-release-notes.rst
@@ -0,0 +1,94 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+
+NFVbench Loop VM Image Release Notes
+++++++++++++++++++++++++++++++++++++
+
+As explained in :ref:`nfvbench-artefact-versioning`, NFVbench loop VM image has
+its own version numbering scheme. Starting from version 0.11, this page
+summarizes the news of each release.
+
+
+Release 0.16 (2022-11-15)
+=========================
+
+Fixes:
+
+- Increase wait for VPP service from 10 to 30 seconds (10s is not enough on some
+ setups) and poll every second instead of sleeping 10s.
+
+- Set the MTU of the management interface to 1500 by default (to reduce the risk
+ to get an unmanageable VM). A different value can be set using the
+ ``INTF_MGMT_MTU`` variable in ``/etc/nfvbenchvm.conf``.
+
+Changes for developers:
+
+- Add 2 debug features to ``build-image.sh``:
+
+ - The new option ``-t`` (enable debug traces) allows to show in the build log
+ the commands run in the shell scripts, including the commands defined in the
+ disk image builder elements.
+
+ - The new option ``-d`` (debug) instructs ``disk-image-create`` to drop the
+ developer in a shell inside the chroot in case an error occurs. This makes
+ troubleshooting of the image possible (inspect files, run commands, ...)
+
+- Abort build on error: make sure a VM image build fails if any step fails.
+ Else we can end up with a bad image not containing all that we want, and we
+ discover this later at run time.
+
+- Fix build with diskimage_builder (dib) 3.16.0.
+
+- Switch VPP package repository to packagecloud.io instead of nexus.fd.io. This
+ fixes intermittent access issues with nexus.fd.io and this will make it
+ possible to get vpp releases higher than 19.08.
+
+- Separate loop VM and generator VM version numbers (a first step towards using
+ nfvbench version number for the generator VM).
+
+
+Release 0.15 (2021-06-04)
+=========================
+
+- NFVBENCH-211 Fix VPP driver for loop VM (switch UIO driver for VPP forwarder:
+ use ``uio_pci_generic`` instead of ``igb_uio``).
+
+
+Release 0.14 (2021-05-21)
+=========================
+
+- NFVBENCH-209 Fix NFVbench loopvm build failed on testpmd step (includes switch
+ UIO driver for testmpd forwarder: use ``uio_pci_generic`` instead of
+ ``igb_uio``).
+
+
+Release 0.13 (2021-04-28)
+=========================
+
+- NFVBENCH-196: New NFVbench image for generator part (nfvbench and TRex codes inside VM)
+- Change Linux kernel boot-time configuration (kernel CLI parameters):
+
+ - Extend CPU isolation (``isolcpus=1-7`` instead of ``isolcpus=1``)
+ - Increase the number of 1GB huge pages (``hugepages=4`` instead of ``hugepages=2``)
+ - Enable IOMMU (``intel_iommu=on iommu=pt``)
+
+- Load the ``vfio-pci`` kernel module with the ``enable_unsafe_noiommu_mode=1`` option.
+
+
+Release 0.12 (2020-01-23)
+=========================
+
+- NFVBENCH-157 Add possibility to not use the ARP static configuration for VPP loop VM
+
+
+Release 0.11 (2019-11-26)
+=========================
+
+- NFVBENCH-156 Add management interface and ssh config in NFVBench image
+
+
+Earlier releases
+================
+
+See NFVbench commit history.
diff --git a/docs/requirements.txt b/docs/requirements.txt
index 9fde2df..4c9e064 100644
--- a/docs/requirements.txt
+++ b/docs/requirements.txt
@@ -1,2 +1,7 @@
-lfdocs-conf
-sphinx_opnfv_theme
+# Python dependencies needed to build and check nfvbench documentation
+
+sphinx # BSD
+piccolo_theme
+
+# Extract nfvbench version from git
+pbr
diff --git a/docs/testing/developer/devguide/index.rst b/docs/testing/developer/devguide/index.rst
deleted file mode 100644
index e219889..0000000
--- a/docs/testing/developer/devguide/index.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-.. _nfvbench-releasenotes:
-
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-.. http://creativecommons.org/licenses/by/4.0
-
-***************
-Developer Guide
-***************
diff --git a/docs/testing/index.rst b/docs/testing/index.rst
deleted file mode 100644
index b795e6b..0000000
--- a/docs/testing/index.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International
-.. License.
-.. http://creativecommons.org/licenses/by/4.0
-.. (c) Cisco Systems, Inc
-
-.. toctree::
- :maxdepth: 2
-
- developer/devguide/index
- user/configguide/index
- user/userguide/index
diff --git a/docs/testing/user/configguide/configguide.rst b/docs/testing/user/configguide/configguide.rst
deleted file mode 100644
index f790d21..0000000
--- a/docs/testing/user/configguide/configguide.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International
-.. License.
-.. http://creativecommons.org/licenses/by/4.0
-.. (c) Cisco Systems, Inc
-
-*******************
-Configuration Guide
-*******************
diff --git a/docs/testing/user/configguide/index.rst b/docs/testing/user/configguide/index.rst
deleted file mode 100644
index ce3b778..0000000
--- a/docs/testing/user/configguide/index.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International
-.. License.
-.. http://creativecommons.org/licenses/by/4.0
-.. (c) Cisco Systems, Inc
-
-.. toctree::
- :maxdepth: 1
-
- configguide
diff --git a/docs/testing/user/userguide/_static/custom.css b/docs/testing/user/userguide/_static/custom.css
deleted file mode 100644
index 6cbfde3..0000000
--- a/docs/testing/user/userguide/_static/custom.css
+++ /dev/null
@@ -1,4 +0,0 @@
-.wy-nav-content {
- max-width: 1200px !important;
-}
-
diff --git a/docs/testing/user/userguide/_templates/layout.html b/docs/testing/user/userguide/_templates/layout.html
deleted file mode 100644
index f3387d5..0000000
--- a/docs/testing/user/userguide/_templates/layout.html
+++ /dev/null
@@ -1,5 +0,0 @@
-{% extends "!layout.html" %}
-{% block extrahead %}
- <link href="{{ pathto("_static/custom.css", True) }}" rel="stylesheet" type="text/css">
-{% endblock %}
-
diff --git a/docs/testing/user/userguide/advanced.rst b/docs/testing/user/userguide/advanced.rst
deleted file mode 100644
index e49cfab..0000000
--- a/docs/testing/user/userguide/advanced.rst
+++ /dev/null
@@ -1,352 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-.. SPDX-License-Identifier: CC-BY-4.0
-.. (c) Cisco Systems, Inc
-
-==============
-Advanced Usage
-==============
-
-This section covers a few examples on how to run NFVbench with multiple different settings.
-Below are shown the most common and useful use-cases and explained some fields from a default config file.
-
-How to change any NFVbench run configuration (CLI)
---------------------------------------------------
-NFVbench always starts with a default configuration which can further be refined (overridden) by the user from the CLI or from REST requests.
-
-At first have a look at the default config:
-
-.. code-block:: bash
-
- nfvbench --show-default-config
-
-It is sometimes useful derive your own configuration from a copy of the default config:
-
-.. code-block:: bash
-
- nfvbench --show-default-config > nfvbench.cfg
-
-At this point you can edit the copy by:
-
-- removing any parameter that is not to be changed (since NFVbench will always load the default configuration, default values are not needed)
-- edit the parameters that are to be changed changed
-
-A run with the new confguration can then simply be requested using the -c option and by using the actual path of the configuration file
-as seen from inside the container (in this example, we assume the current directory is mapped to /tmp/nfvbench in the container):
-
-.. code-block:: bash
-
- nfvbench -c /tmp/nfvbench/nfvbench.cfg
-
-The same -c option also accepts any valid yaml or json string to override certain parameters without having to create a configuration file.
-
-NFVbench provides many configuration options as optional arguments. For example the number of flows can be specified using the --flow-count option.
-
-The flow count option can be specified in any of 3 ways:
-
-- by providing a confguration file that has the flow_count value to use (-c myconfig.yaml and myconfig.yaml contains 'flow_count: 100k')
-- by passing that yaml paremeter inline (-c "flow_count: 100k") or (-c "{flow_count: 100k}")
-- by using the flow count optional argument (--flow-count 100k)
-
-Showing the running configuration
----------------------------------
-
-Because configuration parameters can be overriden, it is sometimes useful to show the final configuration (after all oevrrides are done) by using the --show-config option.
-This final configuration is also called the "running" configuration.
-
-For example, this will only display the running configuration (without actually running anything):
-
-.. code-block:: bash
-
- nfvbench -c "{flow_count: 100k, debug: true}" --show-config
-
-
-Connectivity and Configuration Check
-------------------------------------
-
-NFVbench allows to test connectivity to devices used with the selected packet path.
-It runs the whole test, but without actually sending any traffic.
-It is also a good way to check if everything is configured properly in the configuration file and what versions of components are used.
-
-To verify everything works without sending any traffic, use the --no-traffic option:
-
-.. code-block:: bash
-
- nfvbench --no-traffic
-
-Used parameters:
-
-* ``--no-traffic`` or ``-0`` : sending traffic from traffic generator is skipped
-
-
-TRex force restart
-------------------------------------
-
-NFVbench allows to restart TRex traffic generator between runs.
-It runs the whole test, but restart TRex instance before generating new traffic.
-
-To force restart, use the --restart option:
-
-.. code-block:: bash
-
- nfvbench --restart
-
-Used parameters:
-
-* ``--restart`` : restart traffic generator (TRex)
-
-
-Fixed Rate Run
---------------
-
-Fixed rate run is the most basic type of NFVbench usage. It can be used to measure the drop rate with a fixed transmission rate of packets.
-
-This example shows how to run the PVP packet path (which is the default packet path) with multiple different settings:
-
-.. code-block:: bash
-
- nfvbench -c nfvbench.cfg --no-cleanup --rate 100000pps --duration 30 --interval 15 --json results.json
-
-Used parameters:
-
-* ``-c nfvbench.cfg`` : path to the config file
-* ``--no-cleanup`` : resources (networks, VMs, attached ports) are not deleted after test is finished
-* ``--rate 100000pps`` : defines rate of packets sent by traffic generator
-* ``--duration 30`` : specifies how long should traffic be running in seconds
-* ``--interval 15`` : stats are checked and shown periodically (in seconds) in this interval when traffic is flowing
-* ``--json results.json`` : collected data are stored in this file after run is finished
-
-.. note:: It is your responsibility to clean up resources if needed when ``--no-cleanup`` parameter is used. You can use the nfvbench_cleanup helper script for that purpose.
-
-The ``--json`` parameter makes it easy to store NFVbench results. The --show-summary (or -ss) option can be used to display the results in a json results file in a text tabular format:
-
-.. code-block:: bash
-
- nfvbench --show-summary results.json
-
-
-This example shows how to specify a different packet path:
-
-.. code-block:: bash
-
- nfvbench -c nfvbench.cfg --rate 1Mbps --inter-node --service-chain PVVP
-
-Used parameters:
-
-* ``-c nfvbench.cfg`` : path to the config file
-* ``--rate 1Mbps`` : defines rate of packets sent by traffic generator
-* ``--inter-node`` : VMs are created on different compute nodes, works only with PVVP flow
-* ``--service-chain PVVP`` or ``-sc PVVP`` : specifies the type of service chain (or packet path) to use
-
-.. note:: When parameter ``--inter-node`` is not used or there aren't enough compute nodes, VMs are on the same compute node.
-
-
-Rate Units
-^^^^^^^^^^
-
-Parameter ``--rate`` accepts different types of values:
-
-* packets per second (pps, kpps, mpps), e.g. ``1000pps`` or ``10kpps``
-* load percentage (%), e.g. ``50%``
-* bits per second (bps, kbps, Mbps, Gbps), e.g. ``1Gbps``, ``1000bps``
-* NDR/PDR (ndr, pdr, ndr_pdr), e.g. ``ndr_pdr``
-
-NDR/PDR is the default rate when not specified.
-
-NDR and PDR
------------
-
-The NDR and PDR test is used to determine the maximum throughput performance of the system under test
-following guidelines defined in RFC-2544:
-
-* NDR (No Drop Rate): maximum packet rate sent without dropping any packet
-* PDR (Partial Drop Rate): maximum packet rate sent while allowing a given maximum drop rate
-
-The NDR search can also be relaxed to allow some very small amount of drop rate (lower than the PDR maximum drop rate).
-NFVbench will measure the NDR and PDR values by driving the traffic generator through multiple iterations
-at different transmission rates using a binary search algorithm.
-
-The configuration file contains section where settings for NDR/PDR can be set.
-
-.. code-block:: bash
-
- # NDR/PDR configuration
- measurement:
- # Drop rates represent the ratio of dropped packet to the total number of packets sent.
- # Values provided here are percentages. A value of 0.01 means that at most 0.01% of all
- # packets sent are dropped (or 1 packet every 10,000 packets sent)
-
- # No Drop Rate; Default to 0.001%
- NDR: 0.001
- # Partial Drop Rate; NDR should always be less than PDR
- PDR: 0.1
- # The accuracy of NDR and PDR load percentiles; The actual load percentile that match NDR
- # or PDR should be within `load_epsilon` difference than the one calculated.
- load_epsilon: 0.1
-
-Because NDR/PDR is the default ``--rate`` value, it is possible to run NFVbench simply like this:
-
-.. code-block:: bash
-
- nfvbench -c nfvbench.cfg
-
-Other possible run options:
-
-.. code-block:: bash
-
- nfvbench -c nfvbench.cfg --duration 120 --json results.json
-
-Used parameters:
-
-* ``-c nfvbench.cfg`` : path to the config file
-* ``--duration 120`` : specifies how long should be traffic running in each iteration
-* ``--json results.json`` : collected data are stored in this file after run is finished
-
-
-Multichain
-----------
-
-NFVbench allows to run multiple chains at the same time. For example it is possible to stage the PVP service chain N-times,
-where N can be as much as your compute power can scale. With N = 10, NFVbench will spawn 10 VMs as a part of 10 simultaneous PVP chains.
-
-The number of chains is specified by ``--service-chain-count`` or ``-scc`` flag with a default value of 1.
-For example to run NFVbench with 3 PVP chains:
-
-.. code-block:: bash
-
- nfvbench -c nfvbench.cfg --rate 10000pps -scc 3
-
-It is not necessary to specify the service chain type (-sc) because PVP is set as default. The PVP service chains will have 3 VMs in 3 chains with this configuration.
-If ``-sc PVVP`` is specified instead, there would be 6 VMs in 3 chains as this service chain has 2 VMs per chain.
-Both **single run** or **NDR/PDR** can be run as multichain. Running multichain is a scenario closer to a real life situation than runs with a single chain.
-
-
-Multiflow
----------
-
-NFVbench always generates L3 packets from the traffic generator but allows the user to specify how many flows to generate.
-A flow is identified by a unique src/dest MAC IP and port tuple that is sent by the traffic generator. Flows are
-generated by ranging the IP adresses but using a small fixed number of MAC addresses.
-
-The number of flows will be spread roughly even between chains when more than 1 chain is being tested.
-For example, for 11 flows and 3 chains, number of flows that will run for each chain will be 3, 4, and 4 flows respectively.
-
-The number of flows is specified by ``--flow-count`` or ``-fc`` flag, the default value is 2 (1 flow in each direction).
-To run NFVbench with 3 chains and 100 flows, use the following command:
-
-.. code-block:: bash
-
- nfvbench -c nfvbench.cfg --rate 10000pps -scc 3 -fc 100
-
-Note that from a vswitch point of view, the
-number of flows seen will be higher as it will be at least 4 times the number of flows sent by the traffic generator
-(add flow to VM and flow from VM).
-
-IP addresses generated can be controlled with the following NFVbench configuration options:
-
-.. code-block:: bash
-
- ip_addrs: ['10.0.0.0/8', '20.0.0.0/8']
- ip_addrs_step: 0.0.0.1
- tg_gateway_ip_addrs: ['1.1.0.100', '2.2.0.100']
- tg_gateway_ip_addrs_step: 0.0.0.1
- gateway_ip_addrs: ['1.1.0.2', '2.2.0.2']
- gateway_ip_addrs_step: 0.0.0.1
-
-``ip_addrs`` are the start of the 2 ip address ranges used by the traffic generators as the packets source and destination packets
-where each range is associated to virtual devices simulated behind 1 physical interface of the traffic generator.
-These can also be written in CIDR notation to represent the subnet.
-
-``tg_gateway_ip_addrs`` are the traffic generator gateway (virtual) ip addresses, all traffic to/from the virtual devices go through them.
-
-``gateway_ip_addrs`` are the 2 gateway ip address ranges of the VMs used in the external chains. They are only used with external chains and must correspond to their public IP address.
-
-The corresponding ``step`` is used for ranging the IP addresses from the `ip_addrs``, ``tg_gateway_ip_addrs`` and ``gateway_ip_addrs`` base addresses.
-0.0.0.1 is the default step for all IP ranges. In ``ip_addrs``, 'random' can be configured which tells NFVBench to generate random src/dst IP pairs in the traffic stream.
-
-
-Traffic Configuration via CLI
------------------------------
-
-While traffic configuration can be modified using the configuration file, it can be inconvenient to have to change the configuration file everytime
-you need to change a traffic configuration option. Traffic configuration options can be overridden with a few CLI options.
-
-Here is an example of configuring traffic via CLI:
-
-.. code-block:: bash
-
- nfvbench --rate 10kpps --service-chain-count 2 -fs 64 -fs IMIX -fs 1518 --unidir
-
-This command will run NFVbench with a unidirectional flow for three packet sizes 64B, IMIX, and 1518B.
-
-Used parameters:
-
-* ``--rate 10kpps`` : defines rate of packets sent by traffic generator (total TX rate)
-* ``-scc 2`` or ``--service-chain-count 2`` : specifies number of parallel chains of given flow to run (default to 1)
-* ``-fs 64`` or ``--frame-size 64``: add the specified frame size to the list of frame sizes to run
-* ``--unidir`` : run traffic with unidirectional flow (default to bidirectional flow)
-
-
-MAC Addresses
--------------
-
-NFVbench will dicover the MAC addresses to use for generated frames using:
-- either OpenStack discovery (find the MAC of an existing VM) in the case of PVP and PVVP service chains
-- or using dynamic ARP discovery (find MAC from IP) in the case of external chains.
-
-Status and Cleanup of NFVbench Resources
-----------------------------------------
-
-The --status option will display the status of NFVbench and list any NFVbench resources. You need to pass the OpenStack RC
-file in order to connect to OpenStack.
-
-.. code-block:: none
-
- # nfvbench --status -r /tmp/nfvbench/openrc
- 2018-04-09 17:05:48,682 INFO Version: 1.3.2.dev1
- 2018-04-09 17:05:48,683 INFO Status: idle
- 2018-04-09 17:05:48,757 INFO Discovering instances nfvbench-loop-vm...
- 2018-04-09 17:05:49,252 INFO Discovering flavor nfvbench.medium...
- 2018-04-09 17:05:49,281 INFO Discovering networks...
- 2018-04-09 17:05:49,365 INFO No matching NFVbench resources found
- #
-
-The Status can be either "idle" or "busy (run pending)".
-
-The --cleanup option will first discover resources created by NFVbench and prompt if you want to proceed with cleaning them up.
-Example of run:
-
-.. code-block:: none
-
- # nfvbench --cleanup -r /tmp/nfvbench/openrc
- 2018-04-09 16:58:00,204 INFO Version: 1.3.2.dev1
- 2018-04-09 16:58:00,205 INFO Status: idle
- 2018-04-09 16:58:00,279 INFO Discovering instances nfvbench-loop-vm...
- 2018-04-09 16:58:00,829 INFO Discovering flavor nfvbench.medium...
- 2018-04-09 16:58:00,876 INFO Discovering networks...
- 2018-04-09 16:58:00,960 INFO Discovering ports...
- 2018-04-09 16:58:01,012 INFO Discovered 6 NFVbench resources:
- +----------+-------------------+--------------------------------------+
- | Type | Name | UUID |
- |----------+-------------------+--------------------------------------|
- | Instance | nfvbench-loop-vm0 | b039b858-777e-467e-99fb-362f856f4a94 |
- | Flavor | nfvbench.medium | a027003c-ad86-4f24-b676-2b05bb06adc0 |
- | Network | nfvbench-net0 | bca8d183-538e-4965-880e-fd92d48bfe0d |
- | Network | nfvbench-net1 | c582a201-8279-4309-8084-7edd6511092c |
- | Port | | 67740862-80ac-4371-b04e-58a0b0f05085 |
- | Port | | b5db95b9-e419-4725-951a-9a8f7841e66a |
- +----------+-------------------+--------------------------------------+
- 2018-04-09 16:58:01,013 INFO NFVbench will delete all resources shown...
- Are you sure? (y/n) y
- 2018-04-09 16:58:01,865 INFO Deleting instance nfvbench-loop-vm0...
- 2018-04-09 16:58:02,058 INFO Waiting for 1 instances to be fully deleted...
- 2018-04-09 16:58:02,182 INFO 1 yet to be deleted by Nova, retries left=6...
- 2018-04-09 16:58:04,506 INFO 1 yet to be deleted by Nova, retries left=5...
- 2018-04-09 16:58:06,636 INFO 1 yet to be deleted by Nova, retries left=4...
- 2018-04-09 16:58:08,701 INFO Deleting flavor nfvbench.medium...
- 2018-04-09 16:58:08,729 INFO Deleting port 67740862-80ac-4371-b04e-58a0b0f05085...
- 2018-04-09 16:58:09,102 INFO Deleting port b5db95b9-e419-4725-951a-9a8f7841e66a...
- 2018-04-09 16:58:09,620 INFO Deleting network nfvbench-net0...
- 2018-04-09 16:58:10,357 INFO Deleting network nfvbench-net1...
- #
-
-The --force-cleanup option will do the same but without prompting for confirmation.
diff --git a/docs/testing/user/userguide/conf.py b/docs/testing/user/userguide/conf.py
deleted file mode 100644
index 5846b00..0000000
--- a/docs/testing/user/userguide/conf.py
+++ /dev/null
@@ -1,358 +0,0 @@
-# Copyright 2017 Cisco Systems, Inc. All rights reserved.
-#
-# 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.
-#
-# NFVBench documentation build configuration file, created by
-# sphinx-quickstart on Thu Sep 29 14:25:18 2016.
-#
-# This file is execfile()d with the current directory set to its
-# containing dir.
-#
-# Note that not all possible configuration values are present in this
-# autogenerated file.
-#
-# All configuration values have a default; values that are commented out
-# serve to show the default.
-
-# If extensions (or modules to document with autodoc) are in another directory,
-# add these directories to sys.path here. If the directory is relative to the
-# documentation root, use os.path.abspath to make it absolute, like shown here.
-#
-
-
-
-# import os
-# import sys
-# sys.path.insert(0, os.path.abspath('.'))
-import os
-from pbr import version as pbr_ver
-import sys
-
-sys.path.insert(0, os.path.abspath('../..'))
-
-# -- General configuration ------------------------------------------------
-
-# If your documentation needs a minimal Sphinx version, state it here.
-#
-# needs_sphinx = '1.0'
-
-# Add any Sphinx extension module names here, as strings. They can be
-# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
-# ones.
-extensions = []
-
-# Add any paths that contain templates here, relative to this directory.
-templates_path = ['_templates']
-
-# The suffix(es) of source filenames.
-# You can specify multiple suffix as a list of string:
-#
-# source_suffix = ['.rst', '.md']
-source_suffix = '.rst'
-
-# The encoding of source files.
-#
-# source_encoding = 'utf-8-sig'
-
-# The master toctree document.
-master_doc = 'index'
-
-# General information about the project.
-project = u'NFVBench'
-copyright = u'2016 Cisco Systems, Inc.'
-author = u'Cisco Systems, Inc.'
-
-# The version info for the project you're documenting, acts as replacement for
-# |version| and |release|, also used in various other places throughout the
-# built documents.
-#
-# The short X.Y version.
-version = pbr_ver.VersionInfo(project).version_string()
-# The full version, including alpha/beta/rc tags.
-release = pbr_ver.VersionInfo(project).version_string_with_vcs()
-
-# The language for content autogenerated by Sphinx. Refer to documentation
-# for a list of supported languages.
-#
-# This is also used if you do content translation via gettext catalogs.
-# Usually you set "language" from the command line for these cases.
-language = None
-
-# There are two options for replacing |today|: either, you set today to some
-# non-false value, then it is used:
-#
-# today = ''
-#
-# Else, today_fmt is used as the format for a strftime call.
-#
-# today_fmt = '%B %d, %Y'
-
-# List of patterns, relative to source directory, that match files and
-# directories to ignore when looking for source files.
-# This patterns also effect to html_static_path and html_extra_path
-exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
-
-# The reST default role (used for this markup: `text`) to use for all
-# documents.
-#
-# default_role = None
-
-# If true, '()' will be appended to :func: etc. cross-reference text.
-#
-# add_function_parentheses = True
-
-# If true, the current module name will be prepended to all description
-# unit titles (such as .. function::).
-#
-# add_module_names = True
-
-# If true, sectionauthor and moduleauthor directives will be shown in the
-# output. They are ignored by default.
-#
-# show_authors = False
-
-# The name of the Pygments (syntax highlighting) style to use.
-pygments_style = 'sphinx'
-
-# A list of ignored prefixes for module index sorting.
-# modindex_common_prefix = []
-
-# If true, keep warnings as "system message" paragraphs in the built documents.
-# keep_warnings = False
-
-# If true, `todo` and `todoList` produce output, else they produce nothing.
-todo_include_todos = False
-
-# -- Options for HTML output ----------------------------------------------
-
-# The theme to use for HTML and HTML Help pages. See the documentation for
-# a list of builtin themes.
-#
-# html_theme = 'haiku'
-html_theme = 'sphinx_rtd_theme'
-
-# Theme options are theme-specific and customize the look and feel of a theme
-# further. For a list of options available for each theme, see the
-# documentation.
-#
-html_theme_options = {}
-
-# Add any paths that contain custom themes here, relative to this directory.
-# html_theme_path = []
-
-# The name for this set of Sphinx documents.
-# "<project> v<release> documentation" by default.
-#
-# html_title = u'NFVBench vdev117'
-
-# A shorter title for the navigation bar. Default is the same as html_title.
-#
-html_short_title = 'nfvbench'
-
-# The name of an image file (relative to this directory) to place at the topß
-# of the sidebar.
-#
-# html_logo = None
-
-# The name of an image file (relative to this directory) to use as a favicon of
-# the docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
-# pixels large.
-#
-# html_favicon = None
-
-# Add any paths that contain custom static files (such as style sheets) here,
-# relative to this directory. They are copied after the builtin static files,
-# so a file named "default.css" will overwrite the builtin "default.css".
-html_static_path = ['_static']
-
-# Add any extra paths that contain custom files (such as robots.txt or
-# .htaccess) here, relative to this directory. These files are copied
-# directly to the root of the documentation.
-#
-# html_extra_path = []
-
-# If not None, a 'Last updated on:' timestamp is inserted at every page
-# bottom, using the given strftime format.
-# The empty string is equivalent to '%b %d, %Y'.
-#
-# html_last_updated_fmt = None
-
-# If true, SmartyPants will be used to convert quotes and dashes to
-# typographically correct entities.
-#
-html_use_smartypants = False
-
-# Custom sidebar templates, maps document names to template names.
-#
-# html_sidebars = {}
-
-# Additional templates that should be rendered to pages, maps page names to
-# template names.
-#
-# html_additional_pages = {}
-
-# If false, no module index is generated.
-#
-# html_domain_indices = True
-
-# If false, no index is generated.
-#
-# html_use_index = True
-
-# If true, the index is split into individual pages for each letter.
-#
-# html_split_index = False
-
-# If true, links to the reST sources are added to the pages.
-#
-# html_show_sourcelink = True
-
-# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
-#
-# html_show_sphinx = True
-
-# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
-#
-# html_show_copyright = True
-
-# If true, an OpenSearch description file will be output, and all pages will
-# contain a <link> tag referring to it. The value of this option must be the
-# base URL from which the finished HTML is served.
-#
-# html_use_opensearch = ''
-
-# This is the file name suffix for HTML files (e.g. ".xhtml").
-# html_file_suffix = None
-
-# Language to be used for generating the HTML full-text search index.
-# Sphinx supports the following languages:
-# 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja'
-# 'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr', 'zh'
-#
-# html_search_language = 'en'
-
-# A dictionary with options for the search language support, empty by default.
-# 'ja' uses this config value.
-# 'zh' user can custom change `jieba` dictionary path.
-#
-# html_search_options = {'type': 'default'}
-
-# The name of a javascript file (relative to the configuration directory) that
-# implements a search results scorer. If empty, the default will be used.
-#
-# html_search_scorer = 'scorer.js'
-
-# Output file base name for HTML help builder.
-htmlhelp_basename = 'NFVBenchdoc'
-
-# -- Options for LaTeX output ---------------------------------------------
-
-latex_elements = {
- # The paper size ('letterpaper' or 'a4paper').
- #
- # 'papersize': 'letterpaper',
-
- # The font size ('10pt', '11pt' or '12pt').
- #
- # 'pointsize': '10pt',
-
- # Additional stuff for the LaTeX preamble.
- #
- # 'preamble': '',
-
- # Latex figure (float) alignment
- #
- # 'figure_align': 'htbp',
-}
-
-# Grouping the document tree into LaTeX files. List of tuples
-# (source start file, target name, title,
-# author, documentclass [howto, manual, or own class]).
-latex_documents = [
- (master_doc, 'NFVBench.tex', u'NFVBench Documentation',
- u'Alec Hothan, Stefano Suryanto, Jan Balaz', 'manual'),
-]
-
-# The name of an image file (relative to this directory) to place at the top of
-# the title page.
-#
-# latex_logo = None
-
-# For "manual" documents, if this is true, then toplevel headings are parts,
-# not chapters.
-#
-# latex_use_parts = False
-
-# If true, show page references after internal links.
-#
-# latex_show_pagerefs = False
-
-# If true, show URL addresses after external links.
-#
-# latex_show_urls = False
-
-# Documents to append as an appendix to all manuals.
-#
-# latex_appendices = []
-
-# It false, will not define \strong, \code, itleref, \crossref ... but only
-# \sphinxstrong, ..., \sphinxtitleref, ... To help avoid clash with user added
-# packages.
-#
-# latex_keep_old_macro_names = True
-
-# If false, no module index is generated.
-#
-# latex_domain_indices = True
-
-
-# -- Options for manual page output ---------------------------------------
-
-# One entry per manual page. List of tuples
-# (source start file, name, description, authors, manual section).
-man_pages = [
- (master_doc, 'nfvbench', u'NFVBench Documentation',
- [author], 1)
-]
-
-# If true, show URL addresses after external links.
-#
-# man_show_urls = False
-
-
-# -- Options for Texinfo output -------------------------------------------
-
-# Grouping the document tree into Texinfo files. List of tuples
-# (source start file, target name, title, author,
-# dir menu entry, description, category)
-texinfo_documents = [
- (master_doc, 'NFVBench', u'NFVBench Documentation',
- author, 'NFVBench', 'One line description of project.',
- 'Miscellaneous'),
-]
-
-# Documents to append as an appendix to all manuals.
-#
-# texinfo_appendices = []
-
-# If false, no module index is generated.
-#
-# texinfo_domain_indices = True
-
-# How to display URL addresses: 'footnote', 'no', or 'inline'.
-#
-# texinfo_show_urls = 'footnote'
-
-# If true, do not generate a @detailmenu in the "Top" node's menu.
-#
-# texinfo_no_detailmenu = False
diff --git a/docs/user/advanced.rst b/docs/user/advanced.rst
new file mode 100644
index 0000000..7cd6250
--- /dev/null
+++ b/docs/user/advanced.rst
@@ -0,0 +1,897 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. SPDX-License-Identifier: CC-BY-4.0
+.. (c) Cisco Systems, Inc
+
+==============
+Advanced Usage
+==============
+
+This section covers a few examples on how to run NFVbench with multiple different settings.
+Below are shown the most common and useful use-cases and explained some fields from a default config file.
+
+How to change any NFVbench run configuration (CLI)
+--------------------------------------------------
+NFVbench always starts with a default configuration which can further be refined (overridden) by the user from the CLI or from REST requests.
+
+At first have a look at the default config:
+
+.. code-block:: bash
+
+ nfvbench --show-default-config
+
+It is sometimes useful derive your own configuration from a copy of the default config:
+
+.. code-block:: bash
+
+ nfvbench --show-default-config > nfvbench.cfg
+
+At this point you can edit the copy by:
+
+- removing any parameter that is not to be changed (since NFVbench will always load the default configuration, default values are not needed)
+- edit the parameters that are to be changed changed
+
+A run with the new confguration can then simply be requested using the -c option and by using the actual path of the configuration file
+as seen from inside the container (in this example, we assume the current directory is mapped to /tmp/nfvbench in the container):
+
+.. code-block:: bash
+
+ nfvbench -c /tmp/nfvbench/nfvbench.cfg
+
+The same -c option also accepts any valid yaml or json string to override certain parameters without having to create a configuration file.
+
+NFVbench provides many configuration options as optional arguments. For example the number of flows can be specified using the --flow-count option.
+
+The flow count option can be specified in any of 3 ways:
+
+- by providing a confguration file that has the flow_count value to use (-c myconfig.yaml and myconfig.yaml contains 'flow_count: 100k')
+- by passing that yaml paremeter inline (-c "flow_count: 100k") or (-c "{flow_count: 100k}")
+- by using the flow count optional argument (--flow-count 100k)
+
+Showing the running configuration
+---------------------------------
+
+Because configuration parameters can be overriden, it is sometimes useful to show the final configuration (after all oevrrides are done) by using the --show-config option.
+This final configuration is also called the "running" configuration.
+
+For example, this will only display the running configuration (without actually running anything):
+
+.. code-block:: bash
+
+ nfvbench -c "{flow_count: 100k, debug: true}" --show-config
+
+
+Connectivity and Configuration Check
+------------------------------------
+
+NFVbench allows to test connectivity to devices used with the selected packet path.
+It runs the whole test, but without actually sending any traffic.
+It is also a good way to check if everything is configured properly in the configuration file and what versions of components are used.
+
+To verify everything works without sending any traffic, use the --no-traffic option:
+
+.. code-block:: bash
+
+ nfvbench --no-traffic
+
+Used parameters:
+
+* ``--no-traffic`` or ``-0`` : sending traffic from traffic generator is skipped
+
+
+TRex force restart
+------------------
+
+NFVbench allows to restart TRex traffic generator between runs.
+It runs the whole test, but restart TRex instance before generating new traffic.
+
+To force restart, use the --restart option:
+
+.. code-block:: bash
+
+ nfvbench --restart
+
+Used parameters:
+
+* ``--restart`` : restart traffic generator (TRex)
+
+Rate Units
+^^^^^^^^^^
+
+Parameter ``--rate`` accepts different types of values:
+
+* packets per second (pps, kpps, mpps), e.g. ``1000pps`` or ``10kpps``
+* load percentage (%), e.g. ``50%``
+* bits per second (bps, kbps, Mbps, Gbps), e.g. ``1Gbps``, ``1000bps``
+* NDR/PDR (ndr, pdr, ndr_pdr), e.g. ``ndr_pdr``
+
+NDR/PDR is the default rate when not specified.
+
+Fixed Rate Run
+--------------
+
+Fixed rate run is the most basic type of NFVbench usage. It can be used to measure the drop rate with a fixed transmission rate of packets.
+
+This example shows how to run the PVP packet path (which is the default packet path) with multiple different settings:
+
+.. code-block:: bash
+
+ nfvbench -c nfvbench.cfg --no-cleanup --rate 100000pps --duration 30 --interval 15 --json results.json
+
+Used parameters:
+
+* ``-c nfvbench.cfg`` : path to the config file
+* ``--no-cleanup`` : resources (networks, VMs, attached ports) are not deleted after test is finished
+* ``--rate 100000pps`` : defines rate of packets sent by traffic generator
+* ``--duration 30`` : specifies how long should traffic be running in seconds
+* ``--interval 15`` : stats are checked and shown periodically (in seconds) in this interval when traffic is flowing
+* ``--json results.json`` : collected data are stored in this file after run is finished
+
+.. note:: It is your responsibility to clean up resources if needed when ``--no-cleanup`` parameter is used. You can use the nfvbench_cleanup helper script for that purpose.
+
+The ``--json`` parameter makes it easy to store NFVbench results. The --show-summary (or -ss) option can be used to display the results in a json results file in a text tabular format:
+
+.. code-block:: bash
+
+ nfvbench --show-summary results.json
+
+
+This example shows how to specify a different packet path:
+
+.. code-block:: bash
+
+ nfvbench -c nfvbench.cfg --rate 1Mbps --inter-node --service-chain PVVP
+
+Used parameters:
+
+* ``-c nfvbench.cfg`` : path to the config file
+* ``--rate 1Mbps`` : defines rate of packets sent by traffic generator
+* ``--inter-node`` : VMs are created on different compute nodes, works only with PVVP flow
+* ``--service-chain PVVP`` or ``-sc PVVP`` : specifies the type of service chain (or packet path) to use
+
+.. note:: When parameter ``--inter-node`` is not used or there aren't enough compute nodes, VMs are on the same compute node.
+
+A fixed rate run can also be used to check the running drop rate while traffic is being generated. In that case the --interval option can be used
+to specify the reporting interval in seconds (minimum is 1 second). This can be useful for example to see how packet drop rate
+evolves over time. One common use case is to see the drop rate when there is a network degradation (e.g. one of the 2 links in a bond
+goes down).
+The console output will show at every reporting interval the number of packets transmitted, received and estimated drop rate for the last reporting interval.
+The smaller is the interval the more precise is the drop rate.
+
+Example of output where the reporting interval is set to 1 (second):
+
+.. code-block:: bash
+
+ 2020-04-25 12:59:16,618 INFO TX: 1,878,719,266; RX: 1,666,641,890; (Est.) Dropped: 2; Drop rate: 0.0000%
+ 2020-04-25 12:59:17,625 INFO TX: 1,883,740,078; RX: 1,671,662,706; (Est.) Dropped: -4; Drop rate: -0.0001%
+ 2020-04-25 12:59:18,632 INFO TX: 1,888,764,404; RX: 1,676,686,993; (Est.) Dropped: 39; Drop rate: 0.0008%
+ 2020-04-25 12:59:19,639 INFO TX: 1,893,785,063; RX: 1,681,276,714; (Est.) Dropped: 430,938; Drop rate: 8.5833%
+ 2020-04-25 12:59:20,645 INFO TX: 1,898,805,769; RX: 1,683,782,636; (Est.) Dropped: 2,514,784; Drop rate: 50.0883%
+ 2020-04-25 12:59:21,652 INFO TX: 1,903,829,191; RX: 1,686,289,860; (Est.) Dropped: 2,516,198; Drop rate: 50.0893%
+ 2020-04-25 12:59:22,658 INFO TX: 1,908,850,478; RX: 1,691,283,008; (Est.) Dropped: 28,139; Drop rate: 0.5604%
+ 2020-04-25 12:59:23,665 INFO TX: 1,913,870,692; RX: 1,696,301,242; (Est.) Dropped: 1,980; Drop rate: 0.0394%
+ 2020-04-25 12:59:24,672 INFO TX: 1,918,889,696; RX: 1,698,806,224; (Est.) Dropped: 2,514,022; Drop rate: 50.0901%
+ 2020-04-25 12:59:25,680 INFO TX: 1,923,915,470; RX: 1,701,314,663; (Est.) Dropped: 2,517,335; Drop rate: 50.0885%
+ 2020-04-25 12:59:26,687 INFO TX: 1,928,944,879; RX: 1,705,886,869; (Est.) Dropped: 457,203; Drop rate: 9.0906%
+ 2020-04-25 12:59:27,696 INFO TX: 1,933,969,377; RX: 1,710,911,346; (Est.) Dropped: 21; Drop rate: 0.0004%
+ 2020-04-25 12:59:28,702 INFO TX: 1,938,998,536; RX: 1,713,843,740; (Est.) Dropped: 2,096,765; Drop rate: 41.6922%
+ 2020-04-25 12:59:29,710 INFO TX: 1,944,019,920; RX: 1,718,226,356; (Est.) Dropped: 638,768; Drop rate: 12.7210%
+ 2020-04-25 12:59:30,718 INFO TX: 1,949,050,206; RX: 1,723,256,639; (Est.) Dropped: 3; Drop rate: 0.0001%
+ 2020-04-25 12:59:31,725 INFO TX: 1,954,075,270; RX: 1,728,281,726; (Est.) Dropped: -23; Drop rate: -0.0005%
+ 2020-04-25 12:59:32,732 INFO TX: 1,959,094,908; RX: 1,733,301,290; (Est.) Dropped: 74; Drop rate: 0.0015%
+ 2020-04-25 12:59:33,739 INFO TX: 1,964,118,902; RX: 1,738,325,357; (Est.) Dropped: -73; Drop rate: -0.0015%
+ 2020-04-25 12:59:34,746 INFO TX: 1,969,143,790; RX: 1,743,350,230; (Est.) Dropped: 15; Drop rate: 0.0003%
+ 2020-04-25 12:59:35,753 INFO TX: 1,974,165,773; RX: 1,748,372,291; (Est.) Dropped: -78; Drop rate: -0.0016%
+ 2020-04-25 12:59:36,759 INFO TX: 1,979,188,496; RX: 1,753,394,957; (Est.) Dropped: 57; Drop rate: 0.0011%
+ 2020-04-25 12:59:37,767 INFO TX: 1,984,208,956; RX: 1,757,183,844; (Est.) Dropped: 1,231,573; Drop rate: 24.5311%
+ 2020-04-25 12:59:38,773 INFO TX: 1,989,233,595; RX: 1,761,729,705; (Est.) Dropped: 478,778; Drop rate: 9.5286%
+ 2020-04-25 12:59:39,780 INFO TX: 1,994,253,350; RX: 1,766,749,467; (Est.) Dropped: -7; Drop rate: -0.0001%
+ 2020-04-25 12:59:40,787 INFO TX: 1,999,276,622; RX: 1,771,772,738; (Est.) Dropped: 1; Drop rate: 0.0000%
+ 2020-04-25 12:59:41,794 INFO TX: 2,004,299,940; RX: 1,776,796,065; (Est.) Dropped: -9; Drop rate: -0.0002%
+ 2020-04-25 12:59:42,800 INFO TX: 2,009,320,453; RX: 1,781,816,583; (Est.) Dropped: -5; Drop rate: -0.0001%
+ 2020-04-25 12:59:43,807 INFO TX: 2,014,340,581; RX: 1,786,503,172; (Est.) Dropped: 333,539; Drop rate: 6.6440%
+ 2020-04-25 12:59:44,814 INFO TX: 2,019,362,996; RX: 1,789,009,857; (Est.) Dropped: 2,515,730; Drop rate: 50.0900%
+ 2020-04-25 12:59:45,821 INFO TX: 2,024,386,346; RX: 1,791,517,070; (Est.) Dropped: 2,516,137; Drop rate: 50.0888%
+
+
+How to read each line:
+
+.. code-block:: bash
+
+ 2020-04-25 10:46:41,276 INFO TX: 4,004,436; RX: 4,004,381; (Est.) Dropped: 55; Drop rate: 0.0014%
+
+At this poing in time, NFvbench has sent 4,004,436 and received 4,004,381 since the start of the run.
+There is deficit of 55 packets on reception which corresponds to 0.0014% of all packets sent during that reporting window interval (last 1 second)
+A negative value means that the RX count is higher than the tx count in that window – this is possible since the RX and TX reads are not atomic.
+
+
+NDR and PDR
+-----------
+
+The NDR and PDR test is used to determine the maximum throughput performance of the system under test
+following guidelines defined in RFC-2544:
+
+* NDR (No Drop Rate): maximum packet rate sent without dropping any packet
+* PDR (Partial Drop Rate): maximum packet rate sent while allowing a given maximum drop rate
+
+The NDR search can also be relaxed to allow some very small amount of drop rate (lower than the PDR maximum drop rate).
+NFVbench will measure the NDR and PDR values by driving the traffic generator through multiple iterations
+at different transmission rates using a binary search algorithm.
+
+The configuration file contains section where settings for NDR/PDR can be set.
+
+.. code-block:: bash
+
+ # NDR/PDR configuration
+ measurement:
+ # Drop rates represent the ratio of dropped packet to the total number of packets sent.
+ # Values provided here are percentages. A value of 0.01 means that at most 0.01% of all
+ # packets sent are dropped (or 1 packet every 10,000 packets sent)
+
+ # No Drop Rate; Default to 0.001%
+ NDR: 0.001
+ # Partial Drop Rate; NDR should always be less than PDR
+ PDR: 0.1
+ # The accuracy of NDR and PDR load percentiles; The actual load percentile that match NDR
+ # or PDR should be within `load_epsilon` difference than the one calculated.
+ load_epsilon: 0.1
+
+Because NDR/PDR is the default ``--rate`` value, it is possible to run NFVbench simply like this:
+
+.. code-block:: bash
+
+ nfvbench -c nfvbench.cfg
+
+Other possible run options:
+
+.. code-block:: bash
+
+ nfvbench -c nfvbench.cfg --duration 120 --json results.json
+
+Used parameters:
+
+* ``-c nfvbench.cfg`` : path to the config file
+* ``--duration 120`` : specifies how long should be traffic running in each iteration
+* ``--json results.json`` : collected data are stored in this file after run is finished
+
+
+Multichain
+----------
+
+NFVbench allows to run multiple chains at the same time. For example it is possible to stage the PVP service chain N-times,
+where N can be as much as your compute power can scale. With N = 10, NFVbench will spawn 10 VMs as a part of 10 simultaneous PVP chains.
+
+The number of chains is specified by ``--service-chain-count`` or ``-scc`` flag with a default value of 1.
+For example to run NFVbench with 3 PVP chains:
+
+.. code-block:: bash
+
+ nfvbench -c nfvbench.cfg --rate 10000pps -scc 3
+
+It is not necessary to specify the service chain type (-sc) because PVP is set as default. The PVP service chains will have 3 VMs in 3 chains with this configuration.
+If ``-sc PVVP`` is specified instead, there would be 6 VMs in 3 chains as this service chain has 2 VMs per chain.
+Both **single run** or **NDR/PDR** can be run as multichain. Running multichain is a scenario closer to a real life situation than runs with a single chain.
+
+
+Multiflow
+---------
+
+NFVbench always generates L3 packets from the traffic generator but allows the user to specify how many flows to generate.
+A flow is identified by a unique src/dest MAC IP and port tuple that is sent by the traffic generator. Flows are
+generated by ranging the IP adresses but using a small fixed number of MAC addresses.
+
+The number of flows will be spread roughly even between chains when more than 1 chain is being tested.
+For example, for 11 flows and 3 chains, number of flows that will run for each chain will be 3, 4, and 4 flows respectively.
+
+The number of flows is specified by ``--flow-count`` or ``-fc`` flag, the default value is 2 (1 flow in each direction).
+To run NFVbench with 3 chains and 100 flows, use the following command:
+
+.. code-block:: bash
+
+ nfvbench -c nfvbench.cfg --rate 10000pps -scc 3 -fc 100
+
+Note that from a vswitch point of view, the
+number of flows seen will be higher as it will be at least 4 times the number of flows sent by the traffic generator
+(add flow to VM and flow from VM).
+
+IP addresses generated can be controlled with the following NFVbench configuration options:
+
+.. code-block:: bash
+
+ ip_addrs: ['10.0.0.0/8', '20.0.0.0/8']
+ ip_addrs_step: 0.0.0.1
+ tg_gateway_ip_addrs: ['1.1.0.100', '2.2.0.100']
+ tg_gateway_ip_addrs_step: 0.0.0.1
+ gateway_ip_addrs: ['1.1.0.2', '2.2.0.2']
+ gateway_ip_addrs_step: 0.0.0.1
+
+``ip_addrs`` are the start of the 2 ip address ranges used by the traffic generators as the packets source and destination packets
+where each range is associated to virtual devices simulated behind 1 physical interface of the traffic generator.
+These can also be written in CIDR notation to represent the subnet.
+
+``tg_gateway_ip_addrs`` are the traffic generator gateway (virtual) ip addresses, all traffic to/from the virtual devices go through them.
+
+``gateway_ip_addrs`` are the 2 gateway ip address ranges of the VMs used in the external chains. They are only used with external chains and must correspond to their public IP address.
+
+The corresponding ``step`` is used for ranging the IP addresses from the `ip_addrs``, ``tg_gateway_ip_addrs`` and ``gateway_ip_addrs`` base addresses.
+0.0.0.1 is the default step for all IP ranges. In ``ip_addrs``, 'random' can be configured which tells NFVBench to generate random src/dst IP pairs in the traffic stream.
+
+UDP ports can be controlled with the following NFVbench configuration options:
+
+.. code-block:: bash
+
+ udp_src_port: ['1024', '65000']
+ udp_dst_port: 53
+ udp_port_step: '1'
+
+``udp_src_port`` and ``udp_dst_port`` are the UDP port value used by the traffic generators.
+These can be written for unique port or range ports for all flow.
+
+The corresponding ``udp_port_step`` is used for ranging the UDP port.
+1 is the default step for all UDP ranges, 'random' can be configured which tells NFVBench to generate random src/dst UDP pairs in the traffic stream.
+
+NB:
+ Use of UDP range will increase possible values of flows (based on ip src/dst and port src/dst tuple).
+ NFVBench will calculate the least common multiple for this tuple to adapt flows generation to ``flow_count`` parameter.
+
+Examples of multiflow
+^^^^^^^^^^^^^^^^^^^^^
+
+1. Source IP is static and one UDP port used (default configuration)
+
+NFVbench configuration options:
+
+.. code-block:: bash
+
+ ip_addrs: ['110.0.0.0/8', '120.0.0.0/8']
+ ip_addrs_step: 0.0.0.1
+ tg_gateway_ip_addrs: ['1.1.0.100', '2.2.0.100']
+ tg_gateway_ip_addrs_step: 0.0.0.1
+ gateway_ip_addrs: ['1.1.0.2', '2.2.0.2']
+ gateway_ip_addrs_step: 0.0.0.1
+
+To run NFVbench with 3 chains and 100 flows, use the following command:
+
+.. code-block:: bash
+
+ nfvbench -c nfvbench.cfg --rate 10000pps -scc 3 -fc 100
+
+The least common multiple for this configuration is lcm(16 777 216, 16 777 216, 1, 1) = 16 777 216.
+.. note:: LCM method used IP pools sizes and UDP source and destination range sizes
+
+Requested flow count is lower than configuration capacity. So, NFVbench will limit IP range to generate accurate flows:
+
+.. code-block:: bash
+
+ 2020-06-17 07:37:47,012 INFO Port 0, chain 0: IP src range [110.0.0.0,110.0.0.0]
+ 2020-06-17 07:37:47,012 INFO Port 0, chain 0: IP dst range [120.0.0.0,120.0.0.15]
+ 2020-06-17 07:37:47,012 INFO Port 0, chain 0: UDP src range [53,53]
+ 2020-06-17 07:37:47,012 INFO Port 0, chain 0: UDP dst range [53,53]
+ 2020-06-17 07:37:47,015 INFO Port 1, chain 0: IP src range [120.0.0.0,120.0.0.0]
+ 2020-06-17 07:37:47,015 INFO Port 1, chain 0: IP dst range [110.0.0.0,110.0.0.15]
+ 2020-06-17 07:37:47,015 INFO Port 1, chain 0: UDP src range [53,53]
+ 2020-06-17 07:37:47,015 INFO Port 1, chain 0: UDP dst range [53,53]
+
+ 2020-06-17 07:38:47,012 INFO Port 0, chain 1: IP src range [110.0.0.1,110.0.0.1]
+ 2020-06-17 07:38:47,012 INFO Port 0, chain 1: IP dst range [120.0.0.16,120.0.0.32]
+ 2020-06-17 07:38:47,012 INFO Port 0, chain 1: UDP src range [53,53]
+ 2020-06-17 07:38:47,012 INFO Port 0, chain 1: UDP dst range [53,53]
+ 2020-06-17 07:38:47,015 INFO Port 1, chain 1: IP src range [120.0.0.1,120.0.0.1]
+ 2020-06-17 07:38:47,015 INFO Port 1, chain 1: IP dst range [110.0.0.16,110.0.0.32]
+ 2020-06-17 07:38:47,015 INFO Port 1, chain 1: UDP src range [53,53]
+ 2020-06-17 07:38:47,015 INFO Port 1, chain 1: UDP dst range [53,53]
+
+ 2020-06-17 07:39:47,012 INFO Port 0, chain 2: IP src range [110.0.0.2,110.0.0.2]
+ 2020-06-17 07:39:47,012 INFO Port 0, chain 2: IP dst range [120.0.0.33,120.0.0.49]
+ 2020-06-17 07:39:47,012 INFO Port 0, chain 2: UDP src range [53,53]
+ 2020-06-17 07:39:47,012 INFO Port 0, chain 2: UDP dst range [53,53]
+ 2020-06-17 07:39:47,015 INFO Port 1, chain 2: IP src range [120.0.0.2,120.0.0.2]
+ 2020-06-17 07:39:47,015 INFO Port 1, chain 2: IP dst range [110.0.0.33,110.0.0.49]
+ 2020-06-17 07:39:47,015 INFO Port 1, chain 2: UDP src range [53,53]
+ 2020-06-17 07:39:47,015 INFO Port 1, chain 2: UDP dst range [53,53]
+
+
+2. Source IP is static, IP step is random and one UDP port used
+
+NFVbench configuration options:
+
+.. code-block:: bash
+
+ ip_addrs: ['110.0.0.0/8', '120.0.0.0/8']
+ ip_addrs_step: 'random'
+ tg_gateway_ip_addrs: ['1.1.0.100', '2.2.0.100']
+ tg_gateway_ip_addrs_step: 0.0.0.1
+ gateway_ip_addrs: ['1.1.0.2', '2.2.0.2']
+ gateway_ip_addrs_step: 0.0.0.1
+
+To run NFVbench with 3 chains and 100 flows, use the following command:
+
+.. code-block:: bash
+
+ nfvbench -c nfvbench.cfg --rate 10000pps -scc 3 -fc 100
+
+The least common multiple for this configuration is lcm(16 777 216, 16 777 216, 1, 1) = 16 777 216.
+.. note:: LCM method used IP pools sizes and UDP source and destination range sizes
+
+Requested flow count is lower than configuration capacity. So, NFVbench will limit IP range to generate accurate flows:
+
+.. code-block:: bash
+
+ 2020-06-17 07:37:47,012 INFO Port 0, chain 0: IP src range [110.0.0.0,110.0.0.0]
+ 2020-06-17 07:37:47,012 INFO Port 0, chain 0: IP dst range [120.0.0.0,120.0.0.15]
+ 2020-06-17 07:37:47,012 INFO Port 0, chain 0: UDP src range [53,53]
+ 2020-06-17 07:37:47,012 INFO Port 0, chain 0: UDP dst range [53,53]
+ 2020-06-17 07:37:47,015 INFO Port 1, chain 0: IP src range [120.0.0.0,120.0.0.0]
+ 2020-06-17 07:37:47,015 INFO Port 1, chain 0: IP dst range [110.0.0.0,110.0.0.15]
+ 2020-06-17 07:37:47,015 INFO Port 1, chain 0: UDP src range [53,53]
+ 2020-06-17 07:37:47,015 INFO Port 1, chain 0: UDP dst range [53,53]
+
+ 2020-06-17 07:38:47,012 INFO Port 0, chain 1: IP src range [110.0.0.1,110.0.0.1]
+ 2020-06-17 07:38:47,012 INFO Port 0, chain 1: IP dst range [120.0.0.16,120.0.0.32]
+ 2020-06-17 07:38:47,012 INFO Port 0, chain 1: UDP src range [53,53]
+ 2020-06-17 07:38:47,012 INFO Port 0, chain 1: UDP dst range [53,53]
+ 2020-06-17 07:38:47,015 INFO Port 1, chain 1: IP src range [120.0.0.1,120.0.0.1]
+ 2020-06-17 07:38:47,015 INFO Port 1, chain 1: IP dst range [110.0.0.16,110.0.0.32]
+ 2020-06-17 07:38:47,015 INFO Port 1, chain 1: UDP src range [53,53]
+ 2020-06-17 07:38:47,015 INFO Port 1, chain 1: UDP dst range [53,53]
+
+ 2020-06-17 07:39:47,012 INFO Port 0, chain 2: IP src range [110.0.0.2,110.0.0.2]
+ 2020-06-17 07:39:47,012 INFO Port 0, chain 2: IP dst range [120.0.0.33,120.0.0.49]
+ 2020-06-17 07:39:47,012 INFO Port 0, chain 2: UDP src range [53,53]
+ 2020-06-17 07:39:47,012 INFO Port 0, chain 2: UDP dst range [53,53]
+ 2020-06-17 07:39:47,015 INFO Port 1, chain 2: IP src range [120.0.0.2,120.0.0.2]
+ 2020-06-17 07:39:47,015 INFO Port 1, chain 2: IP dst range [110.0.0.33,110.0.0.49]
+ 2020-06-17 07:39:47,015 INFO Port 1, chain 2: UDP src range [53,53]
+ 2020-06-17 07:39:47,015 INFO Port 1, chain 2: UDP dst range [53,53]
+ 2020-06-17 07:39:47,015 WARNING Using random step, the number of flows can be less than the requested number of flows due to repeatable multivariate random generation which can reproduce the same pattern of values
+
+By using a random step the number of generated flows may be less than the number of requested flows. This is due to the probability of drawing the same value several times (Bernouillian drawing) from the IP range used and thus generating the same flow sequence.
+By using a high range of UDP ports couple with ``udp_port_step='random'`` the probability to reach the requested flow counts is greater.
+As latency stream is a separate stream than data one and have his own random draw, NFVbench will use only one packet signature (same IP and ports used for all latency packets) to avoid flow count overflow.
+So in some cases, generated flow count can be equal to the requested flow count + 1 (latency stream).
+
+**For deterministic flow count we recommend to use a step different from random.**
+
+
+3. Source IP is static, IP step is 5 and one UDP port used
+
+NFVbench configuration options:
+
+.. code-block:: bash
+
+ ip_addrs: ['110.0.0.0/8', '120.0.0.0/8']
+ ip_addrs_step: '0.0.0.5'
+ tg_gateway_ip_addrs: ['1.1.0.100', '2.2.0.100']
+ tg_gateway_ip_addrs_step: 0.0.0.1
+ gateway_ip_addrs: ['1.1.0.2', '2.2.0.2']
+ gateway_ip_addrs_step: 0.0.0.1
+
+To run NFVbench with 3 chains and 100 flows, use the following command:
+
+.. code-block:: bash
+
+ nfvbench -c nfvbench.cfg --rate 10000pps -scc 3 -fc 100
+
+The least common multiple for this configuration is lcm(16 777 216, 16 777 216, 1, 1) = 16 777 216.
+.. note:: LCM method used IP pools sizes and UDP source and destination range sizes
+
+Requested flow count is lower than configuration capacity. So, NFVbench will limit IP range to generate accurate flows:
+
+.. code-block:: bash
+
+ 2020-06-17 07:37:47,012 INFO Port 0, chain 0: IP src range [110.0.0.0,110.0.0.0]
+ 2020-06-17 07:37:47,012 INFO Port 0, chain 0: IP dst range [120.0.0.0,120.0.0.75]
+ 2020-06-17 07:37:47,012 INFO Port 0, chain 0: UDP src range [53,53]
+ 2020-06-17 07:37:47,012 INFO Port 0, chain 0: UDP dst range [53,53]
+ 2020-06-17 07:37:47,015 INFO Port 1, chain 0: IP src range [120.0.0.0,120.0.0.0]
+ 2020-06-17 07:37:47,015 INFO Port 1, chain 0: IP dst range [110.0.0.0,110.0.0.75]
+ 2020-06-17 07:37:47,015 INFO Port 1, chain 0: UDP src range [53,53]
+ 2020-06-17 07:37:47,015 INFO Port 1, chain 0: UDP dst range [53,53]
+
+ 2020-06-17 07:38:47,012 INFO Port 0, chain 1: IP src range [110.0.0.5,110.0.0.5]
+ 2020-06-17 07:38:47,012 INFO Port 0, chain 1: IP dst range [120.0.0.80,120.0.0.160]
+ 2020-06-17 07:38:47,012 INFO Port 0, chain 1: UDP src range [53,53]
+ 2020-06-17 07:38:47,012 INFO Port 0, chain 1: UDP dst range [53,53]
+ 2020-06-17 07:38:47,015 INFO Port 1, chain 1: IP src range [120.0.0.5,120.0.0.5]
+ 2020-06-17 07:38:47,015 INFO Port 1, chain 1: IP dst range [110.0.0.80,110.0.0.160]
+ 2020-06-17 07:38:47,015 INFO Port 1, chain 1: UDP src range [53,53]
+ 2020-06-17 07:38:47,015 INFO Port 1, chain 1: UDP dst range [53,53]
+
+ 2020-06-17 07:39:47,012 INFO Port 0, chain 2: IP src range [110.0.0.10,110.0.0.10]
+ 2020-06-17 07:39:47,012 INFO Port 0, chain 2: IP dst range [120.0.0.165,120.0.0.245]
+ 2020-06-17 07:39:47,012 INFO Port 0, chain 2: UDP src range [53,53]
+ 2020-06-17 07:39:47,012 INFO Port 0, chain 2: UDP dst range [53,53]
+ 2020-06-17 07:39:47,015 INFO Port 1, chain 2: IP src range [120.0.0.10,120.0.0.10]
+ 2020-06-17 07:39:47,015 INFO Port 1, chain 2: IP dst range [110.0.0.165,110.0.0.245]
+ 2020-06-17 07:39:47,015 INFO Port 1, chain 2: UDP src range [53,53]
+ 2020-06-17 07:39:47,015 INFO Port 1, chain 2: UDP dst range [53,53]
+
+4. Source IP is static, IP and UDP ranges sizes greater than requested flow count, UDP step is random
+
+NFVbench configuration options:
+
+.. code-block:: bash
+
+ ip_addrs: ['110.0.0.0/29', '120.0.0.0/30']
+ tg_gateway_ip_addrs: ['1.1.0.100', '2.2.0.100']
+ tg_gateway_ip_addrs_step: 0.0.0.1
+ gateway_ip_addrs: ['1.1.0.2', '2.2.0.2']
+ gateway_ip_addrs_step: 0.0.0.1
+ udp_src_port: ['10', '14']
+ udp_dst_port: ['20', '25']
+ udp_port_step: 'random'
+
+To run NFVbench with 3 chains and 100 flows, use the following command:
+
+.. code-block:: bash
+
+ nfvbench -c nfvbench.cfg --rate 10000pps -scc 3 -fc 100
+
+The least common multiple for this configuration is lcm(8, 4, 5, 6) = 120.
+.. note:: LCM method used IP pools sizes and UDP source and destination range sizes
+
+Requested flow count is higher than IP range (8 and 4 IP addresses available) and UDP (5 and 6 ports available) configuration capacity.
+As the combination of ranges does not permit to obtain an accurate flow count, NFVbench will override the `udp_port_step` property to '1' (was 'random') to allow flows creation.
+A warning log will appear to inform NFVbench user that step properties will be overriden
+So, NFVbench will determine each pool size to generate accurate flows:
+
+.. code-block:: bash
+
+ 2020-06-17 07:37:47,010 WARNING Current values of ip_addrs_step and/or udp_port_step properties do not allow to control an accurate flow count. Values will be overridden as follows:
+ 2020-06-17 07:37:47,011 INFO udp_port_step='1' (previous value: udp_port_step='random')
+ 2020-06-17 07:37:47,012 INFO Port 0, chain 0: IP src range [110.0.0.0,110.0.0.0]
+ 2020-06-17 07:37:47,012 INFO Port 0, chain 0: IP dst range [120.0.0.0,120.0.0.0]
+ 2020-06-17 07:37:47,012 INFO Port 0, chain 0: UDP src range [10,14]
+ 2020-06-17 07:37:47,012 INFO Port 0, chain 0: UDP dst range [20,25]
+ 2020-06-17 07:37:47,013 WARNING Current values of ip_addrs_step and/or udp_port_step properties do not allow to control an accurate flow count. Values will be overridden as follows:
+ 2020-06-17 07:37:47,013 INFO udp_port_step='1' (previous value: udp_port_step='random'
+ 2020-06-17 07:37:47,015 INFO Port 1, chain 0: IP src range [120.0.0.0,120.0.0.0]
+ 2020-06-17 07:37:47,015 INFO Port 1, chain 0: IP dst range [110.0.0.0,110.0.0.0]
+ 2020-06-17 07:37:47,015 INFO Port 1, chain 0: UDP src range [10,14]
+ 2020-06-17 07:37:47,015 INFO Port 1, chain 0: UDP dst range [20,25]
+
+ 2020-06-17 07:38:47,010 WARNING Current values of ip_addrs_step and/or udp_port_step properties do not allow to control an accurate flow count. Values will be overridden as follows:
+ 2020-06-17 07:38:47,011 INFO udp_port_step='1' (previous value: udp_port_step='random'
+ 2020-06-17 07:38:47,012 INFO Port 0, chain 1: IP src range [110.0.0.1,110.0.0.1]
+ 2020-06-17 07:38:47,012 INFO Port 0, chain 1: IP dst range [120.0.0.1,120.0.0.1]
+ 2020-06-17 07:38:47,012 INFO Port 0, chain 1: UDP src range [10,14]
+ 2020-06-17 07:38:47,012 INFO Port 0, chain 1: UDP dst range [20,25]
+ 2020-06-17 07:38:47,013 WARNING Current values of ip_addrs_step and/or udp_port_step properties do not allow to control an accurate flow count. Values will be overridden as follows:
+ 2020-06-17 07:38:47,013 INFO udp_port_step='1' (previous value: udp_port_step='random'
+ 2020-06-17 07:38:47,015 INFO Port 1, chain 1: IP src range [120.0.0.1,120.0.0.1]
+ 2020-06-17 07:38:47,015 INFO Port 1, chain 1: IP dst range [110.0.0.1,110.0.0.1]
+ 2020-06-17 07:38:47,015 INFO Port 1, chain 1: UDP src range [10,14]
+ 2020-06-17 07:38:47,015 INFO Port 1, chain 1: UDP dst range [20,25]
+
+ 2020-06-17 07:39:47,010 WARNING Current values of ip_addrs_step and/or udp_port_step properties do not allow to control an accurate flow count. Values will be overridden as follows:
+ 2020-06-17 07:39:47,011 INFO udp_port_step='1' (previous value: udp_port_step='random'
+ 2020-06-17 07:39:47,012 INFO Port 0, chain 2: IP src range [110.0.0.2,110.0.0.2]
+ 2020-06-17 07:39:47,012 INFO Port 0, chain 2: IP dst range [120.0.0.2,120.0.0.2]
+ 2020-06-17 07:39:47,012 INFO Port 0, chain 2: UDP src range [10,14]
+ 2020-06-17 07:39:47,012 INFO Port 0, chain 2: UDP dst range [20,25]
+ 2020-06-17 07:39:47,013 WARNING Current values of ip_addrs_step and/or udp_port_step properties do not allow to control an accurate flow count. Values will be overridden as follows:
+ 2020-06-17 07:39:47,013 INFO udp_port_step='1' (previous value: udp_port_step='random'
+ 2020-06-17 07:39:47,015 INFO Port 1, chain 2: IP src range [120.0.0.2,120.0.0.2]
+ 2020-06-17 07:39:47,015 INFO Port 1, chain 2: IP dst range [110.0.0.2,110.0.0.2]
+ 2020-06-17 07:39:47,015 INFO Port 1, chain 2: UDP src range [10,14]
+ 2020-06-17 07:39:47,015 INFO Port 1, chain 2: UDP dst range [20,25]
+
+
+Traffic Configuration via CLI
+-----------------------------
+
+While traffic configuration can be modified using the configuration file, it can be inconvenient to have to change the configuration file everytime
+you need to change a traffic configuration option. Traffic configuration options can be overridden with a few CLI options.
+
+Here is an example of configuring traffic via CLI:
+
+.. code-block:: bash
+
+ nfvbench --rate 10kpps --service-chain-count 2 -fs 64 -fs IMIX -fs 1518 --unidir
+
+This command will run NFVbench with a unidirectional flow for three packet sizes 64B, IMIX, and 1518B.
+
+Used parameters:
+
+* ``--rate 10kpps`` : defines rate of packets sent by traffic generator (total TX rate)
+* ``-scc 2`` or ``--service-chain-count 2`` : specifies number of parallel chains of given flow to run (default to 1)
+* ``-fs 64`` or ``--frame-size 64``: add the specified frame size to the list of frame sizes to run
+* ``--unidir`` : run traffic with unidirectional flow (default to bidirectional flow)
+
+
+.. _adv-l2l-cli:
+
+L2 loopback test via CLI
+------------------------
+
+The CLI allows running a pure L2 loopback benchmark with the ``--l2-loopback`` option.
+Enabling this mode overrides any service chain type selected in the config file.
+The usual argument would be a single VLAN ID but the syntax has been extended.
+
+Examples of runs:
+
+* specify the vlan ID
+
+ .. code-block:: bash
+
+ nfvbench -c nfvbench.cfg --frame-size=64 --rate=100% --duration=10 --l2-loopback=123
+
+* specify a list of vlan IDs
+
+ Several service chains are created, the count is adjusted to the list size.
+
+ .. code-block:: bash
+
+ nfvbench -c nfvbench.cfg -fs=64 --rate=100% --duration=10 --l2-loopback=123,124,125
+
+* enable the mode without VLAN tagging
+
+ In this case the service chain count is forced to 1.
+
+ .. code-block:: bash
+
+ nfvbench -c nfvbench.cfg -fs=64 --rate=100% --duration=10 --l2-loopback=no-tag
+
+* use different VLAN tags for left & right side ports
+
+ .. code-block:: bash
+
+ nfvbench -c nfvbench.cfg -fs=64 --rate=100% --duration=10 --l2-loopback=111_211
+ nfvbench -c nfvbench.cfg -fs=64 --rate=100% --duration=10 --l2-loopback=111,112_211,212
+
+ .. note::
+ It may look bizarre to specify mismatched VLAN tags for left & right sides,
+ however no assumption is made about the loop implementation.
+ This could help testing some exotic L2 layer configuration comprising a VLAN rewriting.
+
+* enable the mode, starting from current settings (prepared in the cfg file)
+
+ In this case the service chain count is not adjusted.
+
+ .. code-block:: bash
+
+ nfvbench -c nfvbench.cfg -fs=64 --rate=100% --duration=10 --l2-loopback=true
+
+* disable the mode (possibly enabled in the cfg file)
+
+ .. code-block:: bash
+
+ nfvbench -c nfvbench.cfg --l2-loopback=false
+
+
+MAC Addresses
+-------------
+
+NFVbench will dicover the MAC addresses to use for generated frames using:
+- either OpenStack discovery (find the MAC of an existing VM) in the case of PVP and PVVP service chains
+- or using dynamic ARP discovery (find MAC from IP) in the case of external chains.
+- In case of L3 chain with SDN-GW or router between traffic generator and loop VM ARP is needed to discover SDN-GW mac addresses, use ``--loop-vm-arp`` flag or ``loop_vm_arp: true`` in config file.
+
+Status and Cleanup of NFVbench Resources
+----------------------------------------
+
+The --status option will display the status of NFVbench and list any NFVbench resources. You need to pass the OpenStack RC
+file in order to connect to OpenStack.
+
+.. code-block:: none
+
+ # nfvbench --status -r /tmp/nfvbench/openrc
+ 2018-04-09 17:05:48,682 INFO Version: 1.3.2.dev1
+ 2018-04-09 17:05:48,683 INFO Status: idle
+ 2018-04-09 17:05:48,757 INFO Discovering instances nfvbench-loop-vm...
+ 2018-04-09 17:05:49,252 INFO Discovering flavor nfvbench.medium...
+ 2018-04-09 17:05:49,281 INFO Discovering networks...
+ 2018-04-09 17:05:49,365 INFO No matching NFVbench resources found
+ #
+
+The Status can be either "idle" or "busy (run pending)".
+
+The --cleanup option will first discover resources created by NFVbench and prompt if you want to proceed with cleaning them up.
+Example of run:
+
+.. code-block:: none
+
+ # nfvbench --cleanup -r /tmp/nfvbench/openrc
+ 2018-04-09 16:58:00,204 INFO Version: 1.3.2.dev1
+ 2018-04-09 16:58:00,205 INFO Status: idle
+ 2018-04-09 16:58:00,279 INFO Discovering instances nfvbench-loop-vm...
+ 2018-04-09 16:58:00,829 INFO Discovering flavor nfvbench.medium...
+ 2018-04-09 16:58:00,876 INFO Discovering networks...
+ 2018-04-09 16:58:00,960 INFO Discovering ports...
+ 2018-04-09 16:58:01,012 INFO Discovered 6 NFVbench resources:
+ +----------+-------------------+--------------------------------------+
+ | Type | Name | UUID |
+ |----------+-------------------+--------------------------------------|
+ | Instance | nfvbench-loop-vm0 | b039b858-777e-467e-99fb-362f856f4a94 |
+ | Flavor | nfvbench.medium | a027003c-ad86-4f24-b676-2b05bb06adc0 |
+ | Network | nfvbench-net0 | bca8d183-538e-4965-880e-fd92d48bfe0d |
+ | Network | nfvbench-net1 | c582a201-8279-4309-8084-7edd6511092c |
+ | Port | | 67740862-80ac-4371-b04e-58a0b0f05085 |
+ | Port | | b5db95b9-e419-4725-951a-9a8f7841e66a |
+ +----------+-------------------+--------------------------------------+
+ 2018-04-09 16:58:01,013 INFO NFVbench will delete all resources shown...
+ Are you sure? (y/n) y
+ 2018-04-09 16:58:01,865 INFO Deleting instance nfvbench-loop-vm0...
+ 2018-04-09 16:58:02,058 INFO Waiting for 1 instances to be fully deleted...
+ 2018-04-09 16:58:02,182 INFO 1 yet to be deleted by Nova, retries left=6...
+ 2018-04-09 16:58:04,506 INFO 1 yet to be deleted by Nova, retries left=5...
+ 2018-04-09 16:58:06,636 INFO 1 yet to be deleted by Nova, retries left=4...
+ 2018-04-09 16:58:08,701 INFO Deleting flavor nfvbench.medium...
+ 2018-04-09 16:58:08,729 INFO Deleting port 67740862-80ac-4371-b04e-58a0b0f05085...
+ 2018-04-09 16:58:09,102 INFO Deleting port b5db95b9-e419-4725-951a-9a8f7841e66a...
+ 2018-04-09 16:58:09,620 INFO Deleting network nfvbench-net0...
+ 2018-04-09 16:58:10,357 INFO Deleting network nfvbench-net1...
+ #
+
+The --force-cleanup option will do the same but without prompting for confirmation.
+
+Service mode for TRex
+---------------------
+
+The ``--service-mode`` option allows you to capture traffic on a TRex window during the NFVBench test. Thus, you will be
+able to capture packets generated by TRex to observe many information on it.
+
+Example of use :
+
+.. code-block:: bash
+
+ nfvbench ``--service-mode``
+
+.. note:: It is preferable to define the minimum rate (2002 pps) to have a better capture
+
+In another bash window, you should connect to the TRex console doing:
+
+.. code-block:: bash
+
+ cd /opt/trex/vX.XX/ # use completion here to find your corresponding TRex version
+ ./trex-console --python3 -r
+ # capture on port number 0
+ capture monitor start --rx 0 -v
+
+ # to stop capture
+ capture monitor stop
+
+Start this capture once you have started the NFVBench test, and you will observe packets on the TRex console:
+
+.. code-block:: bash
+
+ #26342 Port: 0 ◀── RX
+
+ trex(read-only)>
+
+ Type: UDP, Size: 66 B, TS: 26.30 [sec]
+
+ trex(read-only)>
+ ###[ Ethernet ]###
+ dst = a0:36:9f:7a:58:8e
+ src = fa:16:3e:57:8f:df
+ type = 0x8100
+ ###[ 802.1Q ]###
+ prio = 0
+ id = 0
+ vlan = 1093
+ type = 0x800
+ ###[ IP ]###
+ version = 4
+ ihl = 5
+ tos = 0x1
+ len = 46
+ id = 65535
+ flags =
+ frag = 0
+ ttl = 63
+ proto = udp
+ chksum = 0x8425
+ src = 120.0.0.0
+ dst = 110.0.17.153
+ \options \
+ ###[ UDP ]###
+ sport = 53
+ dport = 53
+ len = 26
+ chksum = 0xfd83
+ ###[ Raw ]###
+ load = "xx\xab'\x01\x00?s\x00\x00\xbci\xf0_{U~\x00"
+ ###[ Padding ]###
+ load = '6\x85'
+
+Check on the NFVBench window that the following log appears just before the testing phase:
+
+.. code-block:: bash
+
+ 2019-10-21 09:38:51,532 INFO Starting to generate traffic...
+ 2019-10-21 09:38:51,532 INFO Running traffic generator
+ 2019-10-21 09:38:51,541 INFO ``Service mode is enabled``
+ 2019-10-21 09:38:52,552 INFO TX: 2004; RX: 2003; Est. Dropped: 1; Est. Drop rate: 0.0499%
+ 2019-10-21 09:38:53,559 INFO TX: 4013; RX: 4011; Est. Dropped: 2; Est. Drop rate: 0.0498%
+
+Recording packet using service mode for TRex
+--------------------------------------------
+
+Check on the NFVBench window that the following log appears just before the testing phase:
+
+.. code-block:: bash
+
+ 2019-10-21 09:38:51,532 INFO Starting to generate traffic...
+ 2019-10-21 09:38:51,532 INFO Running traffic generator
+ 2019-10-21 09:38:51,541 INFO ``Service mode is enabled``
+ 2019-10-21 09:38:52,552 INFO TX: 2004; RX: 2003; Est. Dropped: 1; Est. Drop rate: 0.0499%
+
+In another bash window, you should connect to the TRex console doing :
+
+.. code-block:: bash
+
+ cd /opt/trex/vX.XX/ #use completion here to find your corresponding TRex version
+ ./trex-console -r
+ capture record start --rx [port number] --limit 10000
+.. note::Start this capture once traffic generation is started (after ``Service mode is enabled`` log)
+
+Check on the TRex window that the following log appears just after capture is started:
+
+.. code-block:: bash
+
+ Starting packet capturing up to 10000 packets [SUCCESS]
+ *** Capturing ID is set to '8' ***
+ *** Please call 'capture record stop --id 8 -o <out.pcap>' when done ***
+
+Then **before end of traffic generation**, stop capture and save it as a PCAP file:
+
+.. code-block:: bash
+
+ capture record stop --id 8 -o /tmp/nfvb/record.pcap
+.. note:: Provide a shared path with between NFVbench container and your host to retrieve pcap file
+
+Check on the TRex window that the following log appears just after capture is started:
+
+.. code-block:: bash
+
+ Stopping packet capture 8 [SUCCESS]
+ Writing up to 10000 packets to '/tmp/nfvb/record.pcap' [SUCCESS]
+ Removing PCAP capture 8 from server [SUCCESS]
+
+.. _user-info:
+
+User info data
+--------------
+
+The ``--user-info`` option allows you to pass custom information as a JSON string.
+This information will be available through JSON output and also exported to ``fluentd`` and can be used in results post-processing.
+
+Example of use :
+
+.. code-block:: bash
+
+ nfvbench ``--user-info='{"status":"explore","description":{"target":"lab","ok":true,"version":2020}'``
+
+.. note:: only JSON string is allowed
+
+``--user-info`` can be used for determining theoretical max rate. In some cases, an overhead encapsulation exists between NFVbench and SUT so NFVbench will not reach line rate inside SUT due to this extra encapsulation.
+To calculate this theoretical line rate inside SUT, NFVbench will use a reserved key: ``extra_encapsulation_bytes`` in ``--user-info`` property.
+
+.. code-block:: bash
+
+ nfvbench ``--user-info='{"extra_encapsulation_bytes": 28}'``
+
+
+As a result, NFVbench will return two values ``theoretical_tx_rate_bps`` and ``theoretical_tx_rate_pps``:
+
+.. code-block:: bash
+
+ "ndr": {
+ "duration_sec": 2.0,
+ "initial_rate_type": "rate_percent",
+ "l2frame_size": "64",
+ "load_percent_per_direction": 100.0,
+ "rate_bps": 20000000000.0,
+ "rate_percent": 200.0,
+ "rate_pps": 29761904,
+ "stats": {
+ ...
+ "offered_tx_rate_bps": 15000000000.0,
+ ...
+ "theoretical_tx_rate_bps": 15000000000.0,
+ "theoretical_tx_rate_pps": 22321428.57142857,
+ "total_tx_rate": 22321428
+ },
+
+In the above example, line rate is 20Gbps but NFVbench is outside SUT and a SDN gateway add an extra encapsulation of 28 bytes.
+Overall, theoretical line rate inside SUT is only 15 Gbps for 64 bytes packet size and it will be this max capacity treated by the target compute node.
diff --git a/docs/testing/user/userguide/examples.rst b/docs/user/examples.rst
index fd6be5c..fd6be5c 100644
--- a/docs/testing/user/userguide/examples.rst
+++ b/docs/user/examples.rst
diff --git a/docs/testing/user/userguide/extchains.rst b/docs/user/extchains.rst
index f7c0e51..f7c0e51 100644
--- a/docs/testing/user/userguide/extchains.rst
+++ b/docs/user/extchains.rst
diff --git a/docs/testing/user/userguide/faq.rst b/docs/user/faq.rst
index 9a1a7da..014a1ab 100644
--- a/docs/testing/user/userguide/faq.rst
+++ b/docs/user/faq.rst
@@ -46,4 +46,50 @@ The most common issues that prevent traffic from passing are:
- incorrect vlan_tagging setting in the NFVbench configuration, this needs to match how the NFVbench ports on the switch are configured (trunk or access port)
- if the switch port is configured as access port, you must disable vlan_tagging in the NFVbench configuration
- - of the switch port is configured as trunk (recommended method), you must enable it
+ - if the switch port is configured as trunk (recommended method), you must enable it
+
+Issues with high performances at a high line rate
+-------------------------------------------------
+
+Flow statistics and/or latency stream can cause performance issue when testing high line rate.
+
+Flow statistics implies CPU usage to analyse packets and retrieve statistics. CPU can reach 100% usage when high throughput is tested because only one CPU is used for packet reception in TRex.
+The ``--no-flow-stats`` option allows you to disable TRex statistics aggregation during the NFVBench test.
+This, will permit to save CPU capabilities used for packet reception.
+
+Example of use :
+
+.. code-block:: bash
+
+ nfvbench ``--no-flow-stats``
+
+ 2019-10-28 10:26:52,099 INFO End-to-end connectivity established
+ 2019-10-28 10:26:52,127 INFO Cleared all existing streams
+ 2019-10-28 10:26:52,129 INFO Traffic flow statistics are disabled.
+
+
+Latency streams implies also CPU usage to analyse packets and retrieve latency values. CPU can reach 100% usage when high throughput is tested because only one CPU is used for packet reception in TRex.
+The ``--no-latency-streams`` option allows you to disable latency streams during the NFVBench test.
+This, will permit to save CPU capabilities used for packet reception but no latency information will be return (to be used only if latency value has no meaning for your test).
+
+Example of use :
+
+.. code-block:: bash
+
+ nfvbench ``--no-latency-streams``
+ 2019-10-28 10:30:03,955 INFO End-to-end connectivity established
+ 2019-10-28 10:30:03,982 INFO Cleared all existing streams
+ 2019-10-28 10:30:03,982 INFO Latency streams are disabled
+
+
+Latency flow statistics implies CPU usage to analyse packets and retrieve statistics. CPU can reach 100% usage when high throughput is tested because only one CPU is used for packet reception in TRex.
+The ``--no-latency-stats`` option allows you to disable TRex statistics aggregation for latency packets during the NFVBench test.
+This, will permit to save CPU capabilities used for packet reception.
+
+Example of use :
+
+.. code-block:: bash
+
+ nfvbench ``--no-latency-stats``
+ 2019-10-28 10:28:21,559 INFO Cleared all existing streams
+ 2019-10-28 10:28:21,567 INFO Latency flow statistics are disabled.
diff --git a/docs/testing/user/userguide/fluentd.rst b/docs/user/fluentd.rst
index e1ff37f..7332458 100644
--- a/docs/testing/user/userguide/fluentd.rst
+++ b/docs/user/fluentd.rst
@@ -192,3 +192,4 @@ And the results of this command obtained from fluentd by elasticsearch:
1508264203755
]
}
+
diff --git a/docs/testing/user/userguide/hw_requirements.rst b/docs/user/hw_requirements.rst
index 124e8a0..44ab549 100644
--- a/docs/testing/user/userguide/hw_requirements.rst
+++ b/docs/user/hw_requirements.rst
@@ -14,7 +14,8 @@ To run NFVbench you need the following hardware:
- a DPDK compatible NIC with at least 2 ports (preferably 10Gbps or higher)
- 2 ethernet cables between the NIC and the OpenStack pod under test (usually through a top of rack switch)
-The DPDK-compliant NIC must be one supported by the TRex traffic generator (such as Intel X710, refer to the `Trex Installation Guide <https://trex-tgn.cisco.com/trex/doc/trex_manual.html#_download_and_installation>`_ for a complete list of supported NIC)
+The DPDK-compliant NIC must be one supported by the TRex traffic generator (such as Intel X710,
+refer to the Trex Installation Guide for a complete list of supported NIC)
To run the TRex traffic generator (that is bundled with NFVbench) you will need to wire 2 physical interfaces of the NIC to the TOR switch(es):
- if you have only 1 TOR, wire both interfaces to that same TOR
diff --git a/docs/testing/user/userguide/images/extchain-config.png b/docs/user/images/extchain-config.png
index 2fd39ba..2fd39ba 100644
--- a/docs/testing/user/userguide/images/extchain-config.png
+++ b/docs/user/images/extchain-config.png
Binary files differ
diff --git a/docs/testing/user/userguide/images/nfvbench-all-sriov-pvvp.png b/docs/user/images/nfvbench-all-sriov-pvvp.png
index d7b1cbb..d7b1cbb 100644
--- a/docs/testing/user/userguide/images/nfvbench-all-sriov-pvvp.png
+++ b/docs/user/images/nfvbench-all-sriov-pvvp.png
Binary files differ
diff --git a/docs/testing/user/userguide/images/nfvbench-all-sriov-pvvp2.png b/docs/user/images/nfvbench-all-sriov-pvvp2.png
index 3d161cd..3d161cd 100644
--- a/docs/testing/user/userguide/images/nfvbench-all-sriov-pvvp2.png
+++ b/docs/user/images/nfvbench-all-sriov-pvvp2.png
Binary files differ
diff --git a/docs/testing/user/userguide/images/nfvbench-ext-multi-vlans.png b/docs/user/images/nfvbench-ext-multi-vlans.png
index 2ef2300..2ef2300 100644
--- a/docs/testing/user/userguide/images/nfvbench-ext-multi-vlans.png
+++ b/docs/user/images/nfvbench-ext-multi-vlans.png
Binary files differ
diff --git a/docs/testing/user/userguide/images/nfvbench-ext-shared.png b/docs/user/images/nfvbench-ext-shared.png
index efe1c71..efe1c71 100644
--- a/docs/testing/user/userguide/images/nfvbench-ext-shared.png
+++ b/docs/user/images/nfvbench-ext-shared.png
Binary files differ
diff --git a/docs/user/images/nfvbench-kibana-filter-kql.png b/docs/user/images/nfvbench-kibana-filter-kql.png
new file mode 100644
index 0000000..f5c7b2d
--- /dev/null
+++ b/docs/user/images/nfvbench-kibana-filter-kql.png
Binary files differ
diff --git a/docs/user/images/nfvbench-kibana-filter.png b/docs/user/images/nfvbench-kibana-filter.png
new file mode 100644
index 0000000..18a6dc5
--- /dev/null
+++ b/docs/user/images/nfvbench-kibana-filter.png
Binary files differ
diff --git a/docs/user/images/nfvbench-kibana-gbps-line.png b/docs/user/images/nfvbench-kibana-gbps-line.png
new file mode 100644
index 0000000..1947412
--- /dev/null
+++ b/docs/user/images/nfvbench-kibana-gbps-line.png
Binary files differ
diff --git a/docs/user/images/nfvbench-kibana-pps-scatter.png b/docs/user/images/nfvbench-kibana-pps-scatter.png
new file mode 100644
index 0000000..89a8e47
--- /dev/null
+++ b/docs/user/images/nfvbench-kibana-pps-scatter.png
Binary files differ
diff --git a/docs/user/images/nfvbench-kibana-pps-theoretical.png b/docs/user/images/nfvbench-kibana-pps-theoretical.png
new file mode 100644
index 0000000..da7dc7a
--- /dev/null
+++ b/docs/user/images/nfvbench-kibana-pps-theoretical.png
Binary files differ
diff --git a/docs/user/images/nfvbench-kibana-zoom-selection.png b/docs/user/images/nfvbench-kibana-zoom-selection.png
new file mode 100644
index 0000000..6af64ea
--- /dev/null
+++ b/docs/user/images/nfvbench-kibana-zoom-selection.png
Binary files differ
diff --git a/docs/user/images/nfvbench-kibana.png b/docs/user/images/nfvbench-kibana.png
new file mode 100644
index 0000000..d185fa0
--- /dev/null
+++ b/docs/user/images/nfvbench-kibana.png
Binary files differ
diff --git a/docs/testing/user/userguide/images/nfvbench-npvp.png b/docs/user/images/nfvbench-npvp.png
index 53d7b00..53d7b00 100644
--- a/docs/testing/user/userguide/images/nfvbench-npvp.png
+++ b/docs/user/images/nfvbench-npvp.png
Binary files differ
diff --git a/docs/testing/user/userguide/images/nfvbench-pvp.png b/docs/user/images/nfvbench-pvp.png
index b460beb..b460beb 100644
--- a/docs/testing/user/userguide/images/nfvbench-pvp.png
+++ b/docs/user/images/nfvbench-pvp.png
Binary files differ
diff --git a/docs/testing/user/userguide/images/nfvbench-pvpl3.png b/docs/user/images/nfvbench-pvpl3.png
index d583724..d583724 100644
--- a/docs/testing/user/userguide/images/nfvbench-pvpl3.png
+++ b/docs/user/images/nfvbench-pvpl3.png
Binary files differ
diff --git a/docs/testing/user/userguide/images/nfvbench-pvvp.png b/docs/user/images/nfvbench-pvvp.png
index d412b20..d412b20 100644
--- a/docs/testing/user/userguide/images/nfvbench-pvvp.png
+++ b/docs/user/images/nfvbench-pvvp.png
Binary files differ
diff --git a/docs/testing/user/userguide/images/nfvbench-pvvp2.png b/docs/user/images/nfvbench-pvvp2.png
index 94f84de..94f84de 100644
--- a/docs/testing/user/userguide/images/nfvbench-pvvp2.png
+++ b/docs/user/images/nfvbench-pvvp2.png
Binary files differ
diff --git a/docs/testing/user/userguide/images/nfvbench-sriov-pvp.png b/docs/user/images/nfvbench-sriov-pvp.png
index 7faec17..7faec17 100644
--- a/docs/testing/user/userguide/images/nfvbench-sriov-pvp.png
+++ b/docs/user/images/nfvbench-sriov-pvp.png
Binary files differ
diff --git a/docs/testing/user/userguide/images/nfvbench-sriov-pvvp.png b/docs/user/images/nfvbench-sriov-pvvp.png
index 5faf8b2..5faf8b2 100644
--- a/docs/testing/user/userguide/images/nfvbench-sriov-pvvp.png
+++ b/docs/user/images/nfvbench-sriov-pvvp.png
Binary files differ
diff --git a/docs/testing/user/userguide/images/nfvbench-sriov-pvvp2.png b/docs/user/images/nfvbench-sriov-pvvp2.png
index f0c1e93..f0c1e93 100644
--- a/docs/testing/user/userguide/images/nfvbench-sriov-pvvp2.png
+++ b/docs/user/images/nfvbench-sriov-pvvp2.png
Binary files differ
diff --git a/docs/testing/user/userguide/images/nfvbench-trex-setup.png b/docs/user/images/nfvbench-trex-setup.png
index 6268068..6268068 100644
--- a/docs/testing/user/userguide/images/nfvbench-trex-setup.png
+++ b/docs/user/images/nfvbench-trex-setup.png
Binary files differ
diff --git a/docs/user/images/nfvbench-xtesting.png b/docs/user/images/nfvbench-xtesting.png
new file mode 100644
index 0000000..d5dca8d
--- /dev/null
+++ b/docs/user/images/nfvbench-xtesting.png
Binary files differ
diff --git a/docs/testing/user/userguide/index.rst b/docs/user/index.rst
index 84c79b0..65b6c2a 100644
--- a/docs/testing/user/userguide/index.rst
+++ b/docs/user/index.rst
@@ -15,8 +15,8 @@ The NFVbench tool provides an automated way to measure the network performance f
It is designed to be easy to install and easy to use by non experts (no need to be an expert in traffic generators and data plane performance testing).
-Table of Content
-----------------
+Table of Contents
+
.. toctree::
:maxdepth: 3
@@ -25,8 +25,11 @@ Table of Content
examples
advanced
pvpl3
+ xtesting
+ mpls
extchains
fluentd
+ kibana
sriov
server
faq
diff --git a/docs/testing/user/userguide/installation.rst b/docs/user/installation.rst
index 8a0511a..8a0511a 100644
--- a/docs/testing/user/userguide/installation.rst
+++ b/docs/user/installation.rst
diff --git a/docs/user/kibana.rst b/docs/user/kibana.rst
new file mode 100644
index 0000000..5fb41f7
--- /dev/null
+++ b/docs/user/kibana.rst
@@ -0,0 +1,96 @@
+.. Copyright 2016 - 2023, Cisco Systems, Inc. and the NFVbench project contributors
+.. SPDX-License-Identifier: CC-BY-4.0
+
+NFVbench Kibana visualization: overview
+=======================================
+
+The fluentd integration offers the possibility to use elasticsearch and kibana as a visualization chain.
+
+Chain overview:
+
+.. image:: images/nfvbench-kibana.png
+
+Example of NFVbench visualizations
+----------------------------------
+
+Kibana offers a lot of visualization type (line and bar charts, pie, time series chart, data table ...) and also provide a plugin to develop graph using Vega.
+In the below examples, visualizations are based on an NDR result and are developed using `Vega-lite <https://vega.github.io/vega-lite-v2>`_.
+Data are aggregated using ``user_label`` and ``flow_count`` properties.
+
+In ``kibana/visualizations/`` pre-created graphs are available into json files.
+
+For NDR capacity in Gbps using line chart, the offered load in Gbps (``offered_tx_rate_bps``) is used and only the maximum value of the aggregation is kept.
+For NDR capacity in Mpps using line chart, the actual TX rate is used (``rate_pps``) and only the maximum value of the aggregation is kept.
+
+Scatter plot graphs use the same values but keep all values instead of keeping maximum.
+
+Example of a line chart:
+
+.. image:: images/nfvbench-kibana-gbps-line.png
+
+Example of a scatter plot chart:
+
+.. image:: images/nfvbench-kibana-pps-scatter.png
+
+Vega offers the possibility to add another graph as a new layer of current graph.
+This solution is used to combine NFVbench results and theoretical line rate.
+Using ``extra_encapsulation_bytes`` in --user-info property (see :ref:`user-info`),
+the theoretical max value (for bps and pps) will be calculated and can be used in graph through ``theoretical_tx_rate_bps`` and ``theoretical_tx_rate_pps`` properties.
+
+Example of chart with theoretical value (red line):
+
+.. image:: images/nfvbench-kibana-pps-theoretical.png
+
+Each Vega graph can be moved, zoomed (using mouse scroll) and one set of data can be selected.
+
+Example:
+
+.. image:: images/nfvbench-kibana-zoom-selection.png
+
+These visualizations are included into Kibana dashboard for a synthesis of one set of result (i.e. same ``user_label`` value) or for comparison (i.e. a selection of ``user_label`` values).
+See :ref:`filterkibana` for more details about ``user_label`` selection.
+
+All these visualizations and dashboards are saved into the ``export.ndjson`` file and can be imported in an existing Kibana. See :ref:`importkibana`.
+
+.. _importkibana:
+
+Import Kibana dashboards and visualization
+------------------------------------------
+
+To import Kibana dashboard and visualization:
+
+.. code-block:: bash
+
+ curl -X POST localhost:5601/api/saved_objects/_import -H "kbn-xsrf: true" --form file=@export.ndjson
+
+.. note:: ``.kibana`` index must exists in elasticsearch.
+.. note:: ``.kibana`` index is created automatically after a first deployment and configuration of Kibana.
+
+.. _filterkibana:
+
+Kibana user guide: Filter dashboards and visualizations
+=======================================================
+
+Filter Kibana dashboard or visualization using Kibana query language (KQL)
+--------------------------------------------------------------------------
+
+.. code-block:: bash
+
+ user_label:*demo* and (flow_count: 128 or flow_count:130000 or flow_count:1000000)
+
+.. note:: This query will filter all user label which contains ``demo`` in the value and filter 3 flow count (128, 130k, 1M).
+.. note:: ``flow_count`` is a number so KQL query can not contain formatted string.
+
+Example:
+
+.. image:: images/nfvbench-kibana-filter-kql.png
+
+
+Filter Kibana dashboard or visualization using Kibana filters
+-------------------------------------------------------------
+
+Kibana offers the possibility to add filter by selecting field and operator (is, is not, is one of, is not one of, exists, does not exist).
+
+Example:
+
+.. image:: images/nfvbench-kibana-filter.png
diff --git a/docs/user/mpls.rst b/docs/user/mpls.rst
new file mode 100644
index 0000000..4a0621b
--- /dev/null
+++ b/docs/user/mpls.rst
@@ -0,0 +1,96 @@
+.. Copyright 2016 - 2023, Cisco Systems, Inc. and the NFVbench project contributors
+.. SPDX-License-Identifier: CC-BY-4.0
+
+==========================
+MPLS encapsulation feature
+==========================
+
+This feature allows to generate packets with standard MPLS L2VPN double stack MPLS labels, where the outer label is transport and the inner label is VPN.
+The top layer of a packets encapsulated inside MPLS L2VPN seems to be an Ethernet layer with the rest of the IP stack inside.
+Please refer to RFC-3031 for more details.
+The whole MPLS packet structure looks like the following:
+
+###[ Ethernet ]###
+ dst = ['00:8a:96:bb:14:28']
+ src = 3c:fd:fe:a3:48:7c
+ type = 0x8847
+###[ MPLS ]### <-------------- Outer Label
+ label = 16303
+ cos = 1
+ s = 0
+ ttl = 255
+###[ MPLS ]### <-------------- Inner Label
+ label = 5010
+ cos = 1
+ s = 1
+ ttl = 255
+###[ Ethernet ]###
+ dst = fa:16:3e:bd:02:b5
+ src = 3c:fd:fe:a3:48:7c
+ type = 0x800
+###[ IP ]###
+ version = 4
+ ihl = None
+ tos = 0x0
+ len = None
+ id = 1
+ flags =
+ frag = 0
+ ttl = 64
+ proto = udp
+ chksum = None
+ src = 16.0.0.1
+ dst = 48.0.0.1
+ \options \
+###[ UDP ]###
+ sport = 53
+ dport = 53
+ len = None
+ chksum = None
+
+Example: nfvbench generates mpls traffic port A ----> port B. This example assumes openstack is at the other end of the mpls tunnels.
+Packets generated and sent to port B are delivered to the MPLS domain infrastructure which will transport that packet to the other end
+of the MPLS transport tunnel using the outer label. At that point, the outer label is decapsulated and the inner label is used to
+select the destination openstack network. After decapsulation of the inner label, the resulting L2 frame is then forwarded to the
+destination VM corresponding to the destination MAC. When the VM receives the packet, it is sent back to far end port of the traffic
+generator (port B) using either L2 forwarding or L3 routing though the peer virtual interface. The return packet is then encapsulated
+with the inner label first then outer label to reach nfvbench on port B.
+
+Only 2 MPLS labels stack is supported. If more than two labels stack is required then these operations should be handled by MPLS transport
+domain where nfvbench is attached next-hop mpls router and rest of the mpls domain should be configured accordingly to be able
+pop/swap/push labels and deliver packet to the proper destination based on an initial transport label injected by nfvbench, VPN label
+should stay unchanged until its delivered to PE (compute node).
+Set nfvbench 'mpls' parameter to 'true' to enable MPLS encapsulation.
+When this option is enabled internal networks 'network type' parameter value should be 'mpls'
+MPLS and VxLAN encapsulations are mutual exclusive features if 'mpls' is 'true' then 'vxlan' should be set to 'false' and vise versa.
+no_flow_stats, no_latency_stats, no_latency_streams parameters should be set to 'true' because these features are not supported at the moment.
+In future when these features will be supported they will require special NIC hardware.
+
+Example of 1-chain MPLS configuration:
+ internal_networks:
+ left:
+ network_type: mpls
+ segmentation_id: 5010
+ mpls_transport_labels: 16303
+ physical_network: phys_sriov0
+ right:
+ network_type: mpls
+ segmentation_id: 5011
+ mpls_transport_labels: 16303
+ physical_network: phys_sriov1
+
+Example of 2-chain MPLS configuration:
+ internal_networks:
+ left:
+ network_type: mpls
+ segmentation_id: [5010, 5020]
+ mpls_transport_labels: [16303, 16304]
+ physical_network: phys_sriov0
+ right:
+ network_type: mpls
+ segmentation_id: [5011, 5021]
+ mpls_transport_labels: [16303, 16304]
+ physical_network: phys_sriov1
+
+Example of how to run:
+nfvbench --rate 50000pps --duration 30 --mpls
diff --git a/docs/testing/user/userguide/pvpl3.rst b/docs/user/pvpl3.rst
index 12f1d86..1b242ca 100644
--- a/docs/testing/user/userguide/pvpl3.rst
+++ b/docs/user/pvpl3.rst
@@ -4,7 +4,7 @@
PVP L3 Router Internal Chain
---------------
+----------------------------
NFVbench can measure the performance of 1 L3 service chain that are setup by NFVbench (VMs, routers and networks).
@@ -63,4 +63,7 @@ Upon start, NFVbench will:
- generate packets with the proper VLAN ID and measure traffic.
-Please note: ``l3_router`` option is also compatible with external routers. In this case NFVBench will use ``EXT`` chain. \ No newline at end of file
+Please note: ``l3_router`` option is also compatible with external routers. In this case NFVBench will use ``EXT`` chain.
+
+.. note:: Using a long NFVbench run test, end-to-end connectivity can be lost depending on ARP stale time SUT configuration.
+ To avoid this issue, activate Gratuitous ARP stream using ``--gratuitous-arp`` or ``-garp`` option.
diff --git a/docs/testing/user/userguide/quickstart_docker.rst b/docs/user/quickstart_docker.rst
index ae277de..ae277de 100644
--- a/docs/testing/user/userguide/quickstart_docker.rst
+++ b/docs/user/quickstart_docker.rst
diff --git a/docs/testing/user/userguide/readme.rst b/docs/user/readme.rst
index 2062906..f6cc153 100644
--- a/docs/testing/user/userguide/readme.rst
+++ b/docs/user/readme.rst
@@ -9,8 +9,7 @@ The NFVbench tool provides an automated way to measure the network performance f
on any NFVi system viewed as a black box (NFVi Full Stack).
An NFVi full stack exposes the following interfaces:
- an OpenStack API for those NFVi platforms based on OpenStack
-- an interface to send and receive packets on the data plane (typically through top of rack switches
- while simpler direct wiring to a looping device would also work)
+- an interface to send and receive packets on the data plane (typically through top of rack switches while simpler direct wiring to a looping device would also work)
The NFVi full stack can be any functional OpenStack system that provides the above interfaces.
NFVbench can also be used without OpenStack on any networking device that can handle L2 forwarding or L3 routing.
@@ -79,21 +78,28 @@ NFVbench supports settings that involve externally staged packet paths with or w
Direct L2 Loopback (Switch or wire loopback)
--------------------------------------------
-NFVbench supports benchmarking of pure L2 loopbacks (see "--l2-loopback vlan" option)
+NFVbench supports benchmarking of pure L2 loopbacks
- Switch level loopback
- Port to port wire loopback
-In this mode, NFVbench will take a vlan ID and send packets from each port to the other port
-(dest MAC set to the other port MAC) using the same VLAN ID on both ports.
+In this mode, NFVbench will send packets from each port to the other port
+(the destination MAC address is set to the other port MAC address).
This can be useful for example to verify that the connectivity to the switch is working properly.
+Such a test can be quickly run using the CLI ``--l2-loopback`` :ref:`option <adv-l2l-cli>`.
+
+For a typical test, packets will be VLAN tagged with the same ID on both ports.
+However, multiple L2 vlan tagged service chains are also allowed,
+which permits testing various configurations and the behavior of the bench itself.
+
+
Traffic Generation
------------------
NFVbench currently integrates with the open source TRex traffic generator:
-- `TRex <https://trex-tgn.cisco.com>`_ (pre-built into the NFVbench container)
+- `TRex <https://github.com/cisco-system-traffic-generator/trex-core>`_ (pre-built into the NFVbench container)
Supported Packet Paths
diff --git a/docs/testing/user/userguide/server.rst b/docs/user/server.rst
index 52645ad..52645ad 100644
--- a/docs/testing/user/userguide/server.rst
+++ b/docs/user/server.rst
diff --git a/docs/testing/user/userguide/sriov.rst b/docs/user/sriov.rst
index f5cc7d2..f5cc7d2 100644
--- a/docs/testing/user/userguide/sriov.rst
+++ b/docs/user/sriov.rst
diff --git a/docs/user/xtesting.rst b/docs/user/xtesting.rst
new file mode 100644
index 0000000..96d1d19
--- /dev/null
+++ b/docs/user/xtesting.rst
@@ -0,0 +1,252 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. SPDX-License-Identifier: CC-BY-4.0
+
+
+NFVbench Xtesting test cases and Xtesting CI integration
+--------------------------------------------------------
+
+NFVbench can leverages on `Xtesting CI <https://galaxy.ansible.com/collivier/xtesting>`_ and the common test case execution proposed by `Xtesting <https://xtesting.readthedocs.io/en/latest/>`_.
+Thanks to a simple test case list, this tool deploys anywhere plug-and-play `CI/CD toolchains in a few commands <https://github.com/collivier/ansible-role-xtesting/blob/master/README.md>`_.
+In addition, it supports multiple components such as Jenkins and Gitlab CI (test schedulers) and multiple deployment models such as all-in-one or centralized services.
+
+NFVbench using Xtesting and Xtesting CI will permit:
+
+- smoothly assemble multiple heterogeneous test cases
+- generate the Jenkins jobs
+- deploy local CI/CD toolchains everywhere
+- dump all test case results and logs for third-party conformance review
+
+Xtesting CI only requires GNU/Linux as Operating System and asks for a few dependencies as described in Deploy your own Xtesting CI/CD toolchains:
+
+- python-virtualenv
+- docker.io
+- git
+
+Please note the next two points depending on the GNU/Linux distributions and the network settings:
+
+- SELinux: you may have to add --system-site-packages when creating the virtualenv ("Aborting, target uses selinux but python bindings (libselinux-python) aren't installed!")
+- Proxy: you may set your proxy in env for Ansible and in systemd for Docker https://docs.docker.com/config/daemon/systemd/#httphttps-proxy
+
+Here is the default NFVbench tree on the host running nfvbench container as
+proposed in ``xtesting/ansible/host_vars/127.0.0.1`` file:
+
+- ``/home/opnfv/nfvbench/config``: contains nfvbench config files including
+ ``nfvbench.cfg``, the default config file used by xtesting test cases
+- ``/home/opnfv/nfvbench/results``: top directory to write nfvbench results and log files
+
+File content:
+
+.. code-block:: yaml
+
+ docker_args:
+ env: {}
+ params:
+ net: host
+ privileged: true
+ volumes:
+ - /lib/modules/$(uname -r):/lib/modules/$(uname -r)
+ - /usr/src/kernels:/usr/src/kernels -v /dev:/dev
+ - /home/opnfv/nfvbench/config:/etc/nfvbench
+ - /home/opnfv/nfvbench/results:/var/lib/xtesting/results
+
+Please note: if you want to use a different directory structure on the host,
+replace ``/home/opnfv/nfvbench/*`` paths with appropriate paths to permit
+NFVbench container to access config file and results directory. The config and
+results paths do not need to share the same root directory.
+
+To deploy your own CI toolchain running NFVbench:
+
+.. code-block:: bash
+
+ virtualenv nfvbench
+ . nfvbench/bin/activate
+ pip install ansible
+ ansible-galaxy install collivier.xtesting
+ git clone https://gerrit.opnfv.org/gerrit/nfvbench nfvbench
+ ansible-playbook nfvbench/xtesting/ansible/site.yml
+
+
+NFVbench Xtesting test cases and existing CI chain
+--------------------------------------------------
+
+For test automation purpose, Xtesting framework can be used as an executor of NFVbench test cases and called by a CI chain (Jenkins, Gitlab CI ...).
+Xtesting use a testcases.yaml file to list and run test case. One basic testcases.yaml is provided by NFVbench natively but can be override.
+
+Example of CI scenario:
+
+.. image:: images/nfvbench-xtesting.png
+
+1. Run NFVbench container using Xtesting python library
+
+The NFVbench container can be started using docker run command.
+
+To run NFVbench using docker run:
+
+.. code-block:: bash
+
+ docker run --rm \
+ -e S3_ENDPOINT_URL=http://127.0.0.1:9000 \
+ -e S3_DST_URL=s3://xtesting/$BUILD_TAG/$JOB_NAME-$BUILD_ID \
+ -e HTTP_DST_URL=http://127.0.0.1:8181/$BUILD_TAG/$JOB_NAME-$BUILD_ID \
+ -e AWS_ACCESS_KEY_ID=xtesting \
+ -e AWS_SECRET_ACCESS_KEY=xtesting \
+ -e TEST_DB_URL=http://127.0.0.1:8000/api/v1/results \
+ -e NODE_NAME=nfvbench \
+ -e BUILD_TAG=$BUILD_TAG \
+ --privileged \
+ -v /lib/modules/$(uname -r):/lib/modules/$(uname -r) \
+ -v /usr/src/kernels:/usr/src/kernels -v /dev:/dev \
+ -v $HOME/nfvbench/config:/etc/nfvbench \
+ -v $HOME/workspace/$JOB_NAME/results:/var/lib/xtesting/results \
+ opnfv/nfvbench run_tests -t 10kpps-pvp-run -r -p
+
++---------------------------------------------------------------+----------------------------------------------------------------------------+
+| Docker options | Description |
++===============================================================+============================================================================+
+| --rm | clean up container after execution |
++---------------------------------------------------------------+----------------------------------------------------------------------------+
+| -e S3_ENDPOINT_URL | (Xtesting) Environnement variable used to store NFVbench artifacts to Minio|
++---------------------------------------------------------------+----------------------------------------------------------------------------+
+| -e S3_DST_URL | (Xtesting) Environnement variable used for S3 storage destination |
++---------------------------------------------------------------+----------------------------------------------------------------------------+
+| -e HTTP_DST_URL | (Xtesting) Environnement variable used for S3www service |
++---------------------------------------------------------------+----------------------------------------------------------------------------+
+| -e AWS_ACCESS_KEY_ID | (Xtesting) Environnement variable used for S3 access key |
++---------------------------------------------------------------+----------------------------------------------------------------------------+
+| -e AWS_SECRET_ACCESS_KEY | (Xtesting) Environnement variable used for S3 access secret |
++---------------------------------------------------------------+----------------------------------------------------------------------------+
+| -e TEST_DB_URL | (Xtesting) Environnement variable used to export NFVbench results in DB |
++---------------------------------------------------------------+----------------------------------------------------------------------------+
+| -e NODE_NAME | (Xtesting) Environnement variable used as result key identifier in DB |
++---------------------------------------------------------------+----------------------------------------------------------------------------+
+| -e BUILD_TAG | (Xtesting) Environnement variable used as result key identifier in DB |
++---------------------------------------------------------------+----------------------------------------------------------------------------+
+| --privileged | (optional) required if SELinux is enabled on the host |
++---------------------------------------------------------------+----------------------------------------------------------------------------+
+| -v /lib/modules:/lib/modules | needed by kernel modules in the container |
++---------------------------------------------------------------+----------------------------------------------------------------------------+
+| -v /usr/src/kernels:/usr/src/kernels | needed by TRex to build kernel modules when needed |
++---------------------------------------------------------------+----------------------------------------------------------------------------+
+| -v /dev:/dev | needed by kernel modules in the container |
++---------------------------------------------------------------+----------------------------------------------------------------------------+
+| -v $HOME/nfvbench/config:/etc/nfvbench | folder mapping to pass config files between the |
+| | host and the docker space (see examples below) |
+| | Here we map the $HOME/nfvbench/config directory on the host |
+| | to the /etc/nfvbench directory in the container. |
+| | Any other mapping can work as well |
++---------------------------------------------------------------+----------------------------------------------------------------------------+
+| -v $HOME/workspace/$JOB_NAME/results:/var/lib/xtesting/results| (Xtesting) folder mapping to pass files between the |
+| | CI chain workspace and the docker space to store Xtesting result files |
+| | in orchestrator (Jenkins, Gitlab ...) |
++---------------------------------------------------------------+----------------------------------------------------------------------------+
+| opnfv/nfvbench | container image name |
++---------------------------------------------------------------+----------------------------------------------------------------------------+
+| run_tests | (Xtesting) Xtesting command to run test cases |
++---------------------------------------------------------------+----------------------------------------------------------------------------+
+| -t 10kpps-pvp-run | (Xtesting) Xtesting parameter: Test case or tier (group of tests) |
+| | to be executed. It will run all the test if not specified. |
++---------------------------------------------------------------+----------------------------------------------------------------------------+
+| -r | (Xtesting) Xtesting parameter: publish result to database |
++---------------------------------------------------------------+----------------------------------------------------------------------------+
+| -p | (Xtesting) Xtesting parameter: publish artifacts to a S3 service |
++---------------------------------------------------------------+----------------------------------------------------------------------------+
+
+2. Run Xtesting test cases
+
+Executed directly by NFVbench docker entrypoint after docker start.
+
+3. Perform NFVbench test
+
+Xtesting call NFVbench python script to execute test case scenario and wait for run to be terminated.
+
+4. Export NFVbench result
+
+If ``-r`` option is used, results are pushed to a DB through Xtesting.
+If ``-p`` option is used, results are pushed to a S3 service through Xtesting.
+
+
+Override testcases.yaml file
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+To replace existing testcases.yaml file, using Xtesting CI add the volume mapping in ``xtesting/ansible/host_vars/127.0.0.1`` file:
+
+.. code-block:: yaml
+
+ docker_args:
+ env: {}
+ volumes:
+ - /lib/modules/$(uname -r):/lib/modules/$(uname -r)
+ - /usr/src/kernels:/usr/src/kernels -v /dev:/dev
+ - /home/opnfv/nfvbench/config:/etc/nfvbench
+ - /home/opnfv/nfvbench/results:/var/lib/xtesting/results
+ - /home/opnfv/nfvbench/xtesting/testcases.yaml:/usr/local/lib/python3.8/dist-packages/xtesting/ci/testcases.yaml
+
+* ``/home/opnfv/nfvbench/xtesting/testcases.yaml:/usr/local/lib/python3.8/dist-packages/xtesting/ci/testcases.yaml`` : volume mapping to pass testcases.yaml file between the host and the docker space. Host path required testcases.yaml file inside.
+
+
+To replace existing testcases.yaml file, using NFVbench container:
+
+.. code-block:: bash
+
+ docker run --name nfvbench --detach --privileged \
+ -v /lib/modules/$(uname -r):/lib/modules/$(uname -r) \
+ -v /usr/src/kernels:/usr/src/kernels \
+ -v /dev:/dev \
+ -v $HOME/nfvbench/config:/etc/nfvbench \
+ -v $HOME/nfvbench/results:/var/lib/xtesting/results \
+ -v $HOME/nfvbench/xtesting/testcases.yaml:/usr/local/lib/python3.8/dist-packages/xtesting/ci/testcases.yaml \
+ opnfv/nfvbench
+
+* ``$HOME/nfvbench/xtesting/testcases.yaml:/usr/local/lib/python3.8/dist-packages/xtesting/ci/testcases.yaml`` : volume mapping to pass testcases.yaml file between the host and the docker space. Host path required testcases.yaml file inside.
+
+
+Example of Xtesting test case
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. code-block:: yaml
+
+ ---
+ tiers:
+ -
+ name: nfvbench
+ order: 1
+ description: 'Data Plane Performance Testing'
+ testcases:
+ -
+ case_name: 10kpps-pvp-run
+ project_name: nfvbench
+ criteria: 100
+ blocking: true
+ clean_flag: false
+ description: ''
+ run:
+ name: 'bashfeature'
+ args:
+ cmd:
+ - nfvbench -c /etc/nfvbench/nfvbench.cfg --rate 10kpps
+
+
+Examples of manual run
+~~~~~~~~~~~~~~~~~~~~~~
+
+If NFVbench container is already started in CLI mode (see Starting NFVbench in CLI mode dedicated chapter).
+To do a single run at 10,000pps bi-directional (or 5kpps in each direction) using the PVP packet path:
+
+.. code-block:: bash
+
+ docker exec -it nfvbench run_tests -t 10kpps-pvp-run
+
+Xtesting option used:
+
+* ``-t 10kpps-pvp-run`` : specify the test case to run
+
+To pass all test cases:
+
+.. code-block:: bash
+
+ docker exec -it nfvbench run_tests -t all
+
+Xtesting option used:
+
+* ``-t all`` : select all test cases existing in testcases.yaml file
+
diff --git a/kibana/visualizations/export.ndjson b/kibana/visualizations/export.ndjson
new file mode 100644
index 0000000..de72cb4
--- /dev/null
+++ b/kibana/visualizations/export.ndjson
@@ -0,0 +1,25 @@
+{"attributes":{"fieldFormatMap":"{\"frame_size_int\":{\"id\":\"number\",\"params\":{\"parsedUrl\":{\"origin\":\"http://172.20.73.203:5651\",\"pathname\":\"/app/kibana\",\"basePath\":\"\"},\"pattern\":\"0,0\"}},\"rate_pps\":{\"id\":\"number\",\"params\":{\"parsedUrl\":{\"origin\":\"http://172.20.73.203:5651\",\"pathname\":\"/app/kibana\",\"basePath\":\"\"},\"pattern\":\"0,0.[000]a\"}},\"rate_bps\":{\"id\":\"number\",\"params\":{\"parsedUrl\":{\"origin\":\"http://172.20.73.203:5651\",\"pathname\":\"/app/kibana\",\"basePath\":\"\"},\"pattern\":\"0,0.[0] bd\"}},\"forward_orig_rate_bps\":{\"id\":\"number\",\"params\":{\"parsedUrl\":{\"origin\":\"http://172.20.73.203:5651\",\"pathname\":\"/app/kibana\",\"basePath\":\"\"},\"pattern\":\"0,0.[0] bd\"}},\"forward_rx_rate_bps\":{\"id\":\"number\",\"params\":{\"parsedUrl\":{\"origin\":\"http://172.20.73.203:5651\",\"pathname\":\"/app/kibana\",\"basePath\":\"\"},\"pattern\":\"0,0.[0] bd\"}},\"forward_tx_rate_bps\":{\"id\":\"number\",\"params\":{\"parsedUrl\":{\"origin\":\"http://172.20.73.203:5651\",\"pathname\":\"/app/kibana\",\"basePath\":\"\"},\"pattern\":\"0,0.[0] bd\"}},\"reverse_orig_rate_bps\":{\"id\":\"number\",\"params\":{\"parsedUrl\":{\"origin\":\"http://172.20.73.203:5651\",\"pathname\":\"/app/kibana\",\"basePath\":\"\"},\"pattern\":\"0,0.[0] bd\"}},\"reverse_rx_rate_bps\":{\"id\":\"number\",\"params\":{\"parsedUrl\":{\"origin\":\"http://172.20.73.203:5651\",\"pathname\":\"/app/kibana\",\"basePath\":\"\"},\"pattern\":\"0,0.[0] bd\"}},\"reverse_tx_rate_bps\":{\"id\":\"number\",\"params\":{\"parsedUrl\":{\"origin\":\"http://172.20.73.203:5651\",\"pathname\":\"/app/kibana\",\"basePath\":\"\"},\"pattern\":\"0,0.[0] bd\"}},\"total_orig_rate_bps\":{\"id\":\"number\",\"params\":{\"parsedUrl\":{\"origin\":\"http://172.20.73.203:5651\",\"pathname\":\"/app/kibana\",\"basePath\":\"\"},\"pattern\":\"0,0.[0] bd\"}},\"total_rx_rate_bps\":{\"id\":\"number\",\"params\":{\"parsedUrl\":{\"origin\":\"http://172.20.73.203:5651\",\"pathname\":\"/app/kibana\",\"basePath\":\"\"},\"pattern\":\"0,0.[0] bd\"}},\"total_tx_rate_bps\":{\"id\":\"number\",\"params\":{\"parsedUrl\":{\"origin\":\"http://172.20.73.203:5651\",\"pathname\":\"/app/kibana\",\"basePath\":\"\"},\"pattern\":\"0,0.[0] bd\"}},\"forward_orig_rate_pps\":{\"id\":\"number\",\"params\":{\"parsedUrl\":{\"origin\":\"http://172.20.73.203:5651\",\"pathname\":\"/app/kibana\",\"basePath\":\"\"},\"pattern\":\"0,0.[000]a\"}},\"forward_rx_rate_pps\":{\"id\":\"number\",\"params\":{\"parsedUrl\":{\"origin\":\"http://172.20.73.203:5651\",\"pathname\":\"/app/kibana\",\"basePath\":\"\"},\"pattern\":\"0,0.[000]a\"}},\"forward_tx_rate_pps\":{\"id\":\"number\",\"params\":{\"parsedUrl\":{\"origin\":\"http://172.20.73.203:5651\",\"pathname\":\"/app/kibana\",\"basePath\":\"\"},\"pattern\":\"0,0.[000]a\"}},\"reverse_orig_rate_pps\":{\"id\":\"number\",\"params\":{\"parsedUrl\":{\"origin\":\"http://172.20.73.203:5651\",\"pathname\":\"/app/kibana\",\"basePath\":\"\"},\"pattern\":\"0,0.[000]a\"}},\"reverse_rx_rate_pps\":{\"id\":\"number\",\"params\":{\"parsedUrl\":{\"origin\":\"http://172.20.73.203:5651\",\"pathname\":\"/app/kibana\",\"basePath\":\"\"},\"pattern\":\"0,0.[000]a\"}},\"reverse_tx_rate_pps\":{\"id\":\"number\",\"params\":{\"parsedUrl\":{\"origin\":\"http://172.20.73.203:5651\",\"pathname\":\"/app/kibana\",\"basePath\":\"\"},\"pattern\":\"0,0.[000]a\"}},\"total_orig_rate_pps\":{\"id\":\"number\",\"params\":{\"parsedUrl\":{\"origin\":\"http://172.20.73.203:5651\",\"pathname\":\"/app/kibana\",\"basePath\":\"\"},\"pattern\":\"0,0.[000]a\"}},\"total_rx_rate_pps\":{\"id\":\"number\",\"params\":{\"parsedUrl\":{\"origin\":\"http://172.20.73.203:5651\",\"pathname\":\"/app/kibana\",\"basePath\":\"\"},\"pattern\":\"0,0.[000]a\"}},\"total_tx_rate_pps\":{\"id\":\"number\",\"params\":{\"parsedUrl\":{\"origin\":\"http://172.20.73.203:5651\",\"pathname\":\"/app/kibana\",\"basePath\":\"\"},\"pattern\":\"0,0.[000]a\"}},\"theoretical_tx_rate_bps\":{\"id\":\"number\",\"params\":{\"parsedUrl\":{\"origin\":\"http://172.20.73.203:5651\",\"pathname\":\"/app/kibana\",\"basePath\":\"\"},\"pattern\":\"0,0.[0] bd\"}},\"theoretical_tx_rate_pps\":{\"id\":\"number\",\"params\":{\"parsedUrl\":{\"origin\":\"http://172.20.73.203:5651\",\"pathname\":\"/app/kibana\",\"basePath\":\"\"},\"pattern\":\"0,0.[000]a\"}}}","fields":"[{\"name\":\"@timestamp\",\"type\":\"date\",\"esTypes\":[\"date\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"Encapsulation\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"Encapsulation.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"Encapsulation\"}}},{\"name\":\"_id\",\"type\":\"string\",\"esTypes\":[\"_id\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"esTypes\":[\"_index\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"esTypes\":[\"_source\"],\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"esTypes\":[\"_type\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"avg_delay_usec\",\"type\":\"number\",\"esTypes\":[\"float\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"bidirectional\",\"type\":\"boolean\",\"esTypes\":[\"boolean\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"drop_limit\",\"type\":\"number\",\"esTypes\":[\"float\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"drop_percentage\",\"type\":\"number\",\"esTypes\":[\"float\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"drop_rate_percent\",\"type\":\"number\",\"esTypes\":[\"float\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"flow_count\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"forward_orig_rate_bps\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"forward_orig_rate_pps\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"forward_rx_rate_bps\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"forward_rx_rate_pps\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"forward_tx_rate_bps\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"forward_tx_rate_pps\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"frame_size\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"frame_size.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"frame_size\"}}},{\"name\":\"lat_percentile_25\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"lat_percentile_75\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"lat_percentile_99\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"max_delay_usec\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"min_delay_usec\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"ndr_search_duration\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"ndr_search_duration.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"ndr_search_duration\"}}},{\"name\":\"offered_tx_rate_bps\",\"type\":\"number\",\"esTypes\":[\"float\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"profile\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"profile.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"profile\"}}},{\"name\":\"rate_bps\",\"type\":\"number\",\"esTypes\":[\"float\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"rate_pps\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"reverse_orig_rate_bps\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"reverse_orig_rate_pps\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"reverse_rx_rate_bps\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"reverse_rx_rate_pps\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"reverse_tx_rate_bps\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"reverse_tx_rate_pps\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"runlogdate\",\"type\":\"date\",\"esTypes\":[\"date\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"sc_count\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"service_chain\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"service_chain.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"service_chain\"}}},{\"name\":\"theoretical_tx_rate_bps\",\"type\":\"number\",\"esTypes\":[\"float\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"theoretical_tx_rate_pps\",\"type\":\"number\",\"esTypes\":[\"float\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"total_orig_rate_bps\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"total_orig_rate_pps\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"total_rx_rate_bps\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"total_rx_rate_pps\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"total_tx_rate_bps\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"total_tx_rate_pps\",\"type\":\"number\",\"esTypes\":[\"long\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"type.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"type\"}}},{\"name\":\"user_label\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"user_label.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"user_label\"}}},{\"name\":\"vSwitch\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"vSwitch.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"vSwitch\"}}},{\"name\":\"version\",\"type\":\"string\",\"esTypes\":[\"text\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"version.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"version\"}}},{\"name\":\"frame_size_int\",\"type\":\"number\",\"count\":0,\"scripted\":true,\"script\":\"if (doc['frame_size.keyword'] != null) {\\n if (doc['frame_size.keyword'].value != \\\"IMIX\\\") {\\n return Integer.parseInt(doc['frame_size.keyword'].value) \\n }\\n else { \\n return 362 \\n } \\n}\",\"lang\":\"painless\",\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false}]","timeFieldName":"@timestamp","title":"resu*"},"id":"e0939790-e78f-11ea-8ca2-35af0cc4217c","migrationVersion":{"index-pattern":"7.6.0"},"references":[],"type":"index-pattern","updated_at":"2020-10-06T12:53:31.024Z","version":"WzE2NTYsMTJd"}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\",\"filter\":[{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"key\":\"type.keyword\",\"negate\":true,\"params\":{\"query\":\"single_run\"},\"type\":\"phrase\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match_phrase\":{\"type.keyword\":\"single_run\"}}}]}"},"title":"Synthesis - one label","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"type\":\"table\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"max\",\"schema\":\"metric\",\"params\":{\"field\":\"rate_bps\",\"customLabel\":\"Offered bps\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"max\",\"schema\":\"metric\",\"params\":{\"field\":\"rate_pps\",\"customLabel\":\"Offered pps\"}},{\"id\":\"3\",\"enabled\":true,\"type\":\"std_dev\",\"schema\":\"metric\",\"params\":{\"field\":\"total_orig_rate_bps\",\"customLabel\":\"std max bps\"}},{\"id\":\"4\",\"enabled\":true,\"type\":\"avg\",\"schema\":\"metric\",\"params\":{\"field\":\"avg_delay_usec\",\"customLabel\":\"latency avg\"}},{\"id\":\"6\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"split\",\"params\":{\"field\":\"flow_count\",\"orderBy\":\"_key\",\"order\":\"asc\",\"size\":50,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"flow count\"}},{\"id\":\"8\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"frame_size_int\",\"orderBy\":\"_key\",\"order\":\"asc\",\"size\":50,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"frame size (bytes)\"}}],\"params\":{\"perPage\":10,\"percentageCol\":\"\",\"row\":false,\"showMetricsAtAllLevels\":false,\"showPartialRows\":false,\"showTotal\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"totalFunc\":\"sum\"},\"title\":\"Synthesis - one label\"}"},"id":"0d2c4070-e6e3-11ea-a933-05dd8fc4d76f","migrationVersion":{"visualization":"7.8.0"},"references":[{"id":"e0939790-e78f-11ea-8ca2-35af0cc4217c","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"},{"id":"e0939790-e78f-11ea-8ca2-35af0cc4217c","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-09-03T13:55:18.628Z","version":"WzExMTcsNV0="}
+{"attributes":{"description":"NDR / PDR line chart - in Mpps","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"key\":\"type.keyword\",\"negate\":true,\"params\":{\"query\":\"single_run\"},\"type\":\"phrase\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match_phrase\":{\"type.keyword\":\"single_run\"}}},{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"key\":\"frame_size\",\"negate\":true,\"params\":{\"query\":\"IMIX\"},\"type\":\"phrase\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[1].meta.index\"},\"query\":{\"match_phrase\":{\"frame_size\":\"IMIX\"}}}]}"},"title":"[NDR] Capacity in Mpps - Line chart","uiStateJSON":"{}","version":1,"visState":"{\"type\":\"vega\",\"aggs\":[],\"params\":{\"spec\":\"{\\n $schema: https: //vega.github.io/schema/vega-lite/v2.json\\n title: \\\"Capacity in Mpps - 0,001% loss ratio\\\"\\n data: {\\n url: {\\n %context%: true\\n %timefield%: \\\"@timestamp\\\"\\n index: resu*\\n body: {\\n _source: [\\\"@timestamp\\\", \\\"_source\\\", \\\"rate_pps\\\", \\\"flow_count\\\", \\\"frame_size\\\", \\\"user_label\\\", \\\"type\\\"]\\n },\\n size: 10000\\n },\\n format: { property: \\\"hits.hits\\\" }\\n },\\n\\n transform: [\\n { calculate: \\\"datum._source['rate_pps'] / 1000000\\\" as: \\\"offered_load_pps\\\"},\\n { calculate: \\\"datum._source['flow_count']\\\" as: \\\"flow_count\\\"},\\n { calculate: \\\"isNaN(toNumber(datum._source['frame_size'])) ? 362 : toNumber(datum._source['frame_size'])\\\" as: \\\"frame_size\\\"},\\n { calculate: \\\"datum._source['user_label'] + '-' + datum._source['flow_count']\\\" as: \\\"label\\\"}\\n { aggregate: [{op: \\\"max\\\", field: \\\"offered_load_pps\\\", as: \\\"max_offered_load_pps\\\"}], groupby: [\\\"frame_size\\\", \\\"label\\\",\\\"flow_count\\\"]}\\n \\n ],\\n center: true,\\n hconcat: [\\n {\\n width:10,\\n selection: {\\n legendSel: {\\n type: \\\"multi\\\",\\n encodings: [ \\\"color\\\", \\\"shape\\\" ],\\n toggle: \\\"event.shiftKey\\\"\\n }\\n },\\n encoding: {\\n y: {\\n field: \\\"label\\\",\\n type: \\\"nominal\\\",\\n axis: {\\n title: \\\"\\\",\\n domain: false,\\n ticks: false,\\n offset: 10\\n },\\n },\\n color: {\\n condition: {\\n selection: \\\"legendSel\\\",\\n field: \\\"label\\\",\\n type: \\\"nominal\\\",\\n legend: null\\n },\\n value: \\\"lightgrey\\\"\\n }\\n },\\n mark: {\\n type: \\\"square\\\",\\n size: 120,\\n opacity: 1\\n }\\n },\\n {\\n width:500,\\n height:280,\\n transform: [\\n {filter: { selection: \\\"legendSel\\\"}}\\n \\n ],\\n mark: {\\n type: \\\"line\\\",\\n tooltip: true,\\n point: true\\n },\\n selection: {\\n grid: {\\n type: \\\"interval\\\",\\n resolve: \\\"global\\\",\\n bind: \\\"scales\\\",\\n translate: \\\"[mousedown[!event.shiftKey], window:mouseup] > window:mousemove!\\\",\\n zoom: \\\"wheel![!event.shiftKey]\\\"\\n },\\n pts: {\\n type: \\\"single\\\",\\n fields: [\\\"Label\\\"]\\n }\\n },\\n encoding: {\\n x: { field: \\\"frame_size\\\", type: \\\"quantitative\\\", title: \\\"Frame size (bytes)\\\", axis: {offset: 10} }\\n y: { field: \\\"max_offered_load_pps\\\", type: \\\"quantitative\\\", title: \\\"Offered load (Mpps)\\\" , axis: {offset: 10} }\\n color: {field: \\\"label\\\", \\\"type\\\": \\\"nominal\\\",\\n \\\"legend\\\": null}\\n tooltip: {\\\"field\\\": \\\"max_offered_load_pps\\\", \\\"type\\\": \\\"quantitative\\\"},\\n shape: {field: \\\"flow_count\\\", type: \\\"nominal\\\"}\\n }\\n } \\n ]\\n}\"},\"title\":\"[NDR] Capacity in Mpps - Line chart\"}"},"id":"1b471fa0-e6b0-11ea-bdc0-1fe1db0b9cb6","migrationVersion":{"visualization":"7.8.0"},"references":[{"id":"e0939790-e78f-11ea-8ca2-35af0cc4217c","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index","type":"index-pattern"},{"id":"e0939790-e78f-11ea-8ca2-35af0cc4217c","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[1].meta.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-10-06T12:39:19.799Z","version":"WzE2MDgsMTJd"}
+{"attributes":{"description":"NDR / PDR line chart - in Gbps","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"key\":\"type.keyword\",\"negate\":true,\"params\":{\"query\":\"single_run\"},\"type\":\"phrase\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match_phrase\":{\"type.keyword\":\"single_run\"}}},{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"key\":\"frame_size\",\"negate\":true,\"params\":{\"query\":\"IMIX\"},\"type\":\"phrase\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[1].meta.index\"},\"query\":{\"match_phrase\":{\"frame_size\":\"IMIX\"}}},{\"$state\":{\"store\":\"appState\"},\"exists\":{\"field\":\"offered_tx_rate_bps\"},\"meta\":{\"alias\":null,\"disabled\":false,\"key\":\"offered_tx_rate_bps\",\"negate\":false,\"type\":\"exists\",\"value\":\"exists\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[2].meta.index\"}}]}"},"title":"[NDR] Capacity in Gbps - Line chart","uiStateJSON":"{}","version":1,"visState":"{\"type\":\"vega\",\"aggs\":[],\"params\":{\"spec\":\"{\\n $schema: https: //vega.github.io/schema/vega-lite/v2.json\\n title: \\\"Capacity in Gbps - 0,001% loss ratio\\\"\\n data: {\\n url: {\\n %context%: true\\n %timefield%: \\\"@timestamp\\\"\\n index: resu*\\n body: {\\n _source: [\\\"@timestamp\\\", \\\"_source\\\", \\\"offered_tx_rate_bps\\\", \\\"flow_count\\\", \\\"frame_size\\\", \\\"user_label\\\"]\\n },\\n size: 10000\\n },\\n format: { property: \\\"hits.hits\\\" }\\n },\\n transform: [\\n { calculate: \\\"datum._source['offered_tx_rate_bps'] / 1000000000\\\" as: \\\"offered_load_gbps\\\"},\\n { calculate: \\\"datum._source['flow_count']\\\" as: \\\"flow_count\\\"},\\n { calculate: \\\"isNaN(toNumber(datum._source['frame_size'])) ? 362 : toNumber(datum._source['frame_size'])\\\" as: \\\"frame_size\\\"},\\n { calculate: \\\"datum._source['user_label'] + '-' + datum._source['flow_count']\\\" as: \\\"label\\\"}\\n { aggregate: [{op: \\\"max\\\", field: \\\"offered_load_gbps\\\", as: \\\"max_offered_load_gbps\\\"}], groupby: [\\\"frame_size\\\", \\\"label\\\",\\\"flow_count\\\"]}\\n ],\\n center: true,\\n hconcat: [\\n {\\n width:10,\\n selection: {\\n legendSel: {\\n type: \\\"multi\\\",\\n encodings: [ \\\"color\\\", \\\"shape\\\" ],\\n toggle: \\\"event.shiftKey\\\"\\n }\\n },\\n encoding: {\\n y: {\\n field: \\\"label\\\",\\n type: \\\"nominal\\\",\\n axis: {\\n title: \\\"\\\",\\n domain: false,\\n ticks: false,\\n offset: 10\\n },\\n },\\n color: {\\n condition: {\\n selection: \\\"legendSel\\\",\\n field: \\\"label\\\",\\n type: \\\"nominal\\\",\\n legend: null\\n },\\n value: \\\"lightgrey\\\"\\n }\\n },\\n mark: {\\n type: \\\"square\\\",\\n size: 120,\\n opacity: 1\\n }\\n },\\n {\\n width:500,\\n height:280,\\n transform: [\\n {filter: { selection: \\\"legendSel\\\"}}\\n ],\\n mark: {\\n type: \\\"line\\\",\\n tooltip: true,\\n point: true\\n },\\n selection: {\\n grid: {\\n type: \\\"interval\\\",\\n resolve: \\\"global\\\",\\n bind: \\\"scales\\\",\\n translate: \\\"[mousedown[!event.shiftKey], window:mouseup] > window:mousemove!\\\",\\n zoom: \\\"wheel![!event.shiftKey]\\\"\\n },\\n pts: {\\n type: \\\"single\\\",\\n fields: [\\\"Label\\\"]\\n }\\n },\\n encoding: {\\n x: { field: \\\"frame_size\\\", type: \\\"quantitative\\\", title: \\\"Frame size (bytes)\\\", axis: {offset: 10} }\\n y: { field: \\\"max_offered_load_gbps\\\", type: \\\"quantitative\\\", title: \\\"Offered load (Gbps)\\\" , axis: {offset: 10} }\\n color: {field: \\\"label\\\", \\\"type\\\": \\\"nominal\\\",\\n \\\"legend\\\": null}\\n shape: {field: \\\"flow_count\\\", type: \\\"nominal\\\"}\\n tooltip: {\\\"field\\\": \\\"max_offered_load_gbps\\\", \\\"type\\\": \\\"quantitative\\\"}\\n }\\n }\\n ]\\n}\"},\"title\":\"[NDR] Capacity in Gbps - Line chart\"}"},"id":"23b0eb40-e60a-11ea-bdc0-1fe1db0b9cb6","migrationVersion":{"visualization":"7.8.0"},"references":[{"id":"e0939790-e78f-11ea-8ca2-35af0cc4217c","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index","type":"index-pattern"},{"id":"e0939790-e78f-11ea-8ca2-35af0cc4217c","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[1].meta.index","type":"index-pattern"},{"id":"e0939790-e78f-11ea-8ca2-35af0cc4217c","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[2].meta.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-10-06T12:41:52.380Z","version":"WzE2MTUsMTJd"}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\",\"filter\":[{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"key\":\"type.keyword\",\"negate\":true,\"params\":{\"query\":\"single_run\"},\"type\":\"phrase\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match_phrase\":{\"type.keyword\":\"single_run\"}}}]}"},"title":"Synthesis - multiple labels","uiStateJSON":"{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}","version":1,"visState":"{\"type\":\"table\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"max\",\"schema\":\"metric\",\"params\":{\"field\":\"rate_bps\",\"customLabel\":\"Offered bps\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"max\",\"schema\":\"metric\",\"params\":{\"field\":\"rate_pps\",\"customLabel\":\"Offered pps\"}},{\"id\":\"3\",\"enabled\":true,\"type\":\"std_dev\",\"schema\":\"metric\",\"params\":{\"field\":\"total_orig_rate_bps\",\"customLabel\":\"std max bps\"}},{\"id\":\"4\",\"enabled\":true,\"type\":\"avg\",\"schema\":\"metric\",\"params\":{\"field\":\"avg_delay_usec\",\"customLabel\":\"latency avg\"}},{\"id\":\"6\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"split\",\"params\":{\"field\":\"flow_count\",\"orderBy\":\"_key\",\"order\":\"asc\",\"size\":50,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"flow count\"}},{\"id\":\"9\",\"enabled\":true,\"type\":\"significant_terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"user_label.keyword\",\"size\":10,\"customLabel\":\"label\"}},{\"id\":\"8\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"frame_size_int\",\"orderBy\":\"_key\",\"order\":\"asc\",\"size\":50,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"frame size (bytes)\"}}],\"params\":{\"perPage\":10,\"percentageCol\":\"\",\"row\":false,\"showMetricsAtAllLevels\":false,\"showPartialRows\":false,\"showTotal\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"totalFunc\":\"sum\"},\"title\":\"Synthesis - multiple labels\"}"},"id":"38cecb10-eded-11ea-a706-3fce679b2102","migrationVersion":{"visualization":"7.8.0"},"references":[{"id":"e0939790-e78f-11ea-8ca2-35af0cc4217c","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"},{"id":"e0939790-e78f-11ea-8ca2-35af0cc4217c","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-09-03T13:56:10.433Z","version":"WzExMTksNV0="}
+{"attributes":{"description":"NDR / PDR scatter plot - in Gbps","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"key\":\"type.keyword\",\"negate\":true,\"params\":{\"query\":\"single_run\"},\"type\":\"phrase\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match_phrase\":{\"type.keyword\":\"single_run\"}}},{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"key\":\"frame_size\",\"negate\":true,\"params\":{\"query\":\"IMIX\"},\"type\":\"phrase\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[1].meta.index\"},\"query\":{\"match_phrase\":{\"frame_size\":\"IMIX\"}}},{\"$state\":{\"store\":\"appState\"},\"exists\":{\"field\":\"offered_tx_rate_bps\"},\"meta\":{\"alias\":null,\"disabled\":false,\"key\":\"offered_tx_rate_bps\",\"negate\":false,\"type\":\"exists\",\"value\":\"exists\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[2].meta.index\"}}]}"},"title":"[NDR] Capacity in Gbps - Scatter plot","uiStateJSON":"{}","version":1,"visState":"{\"type\":\"vega\",\"aggs\":[],\"params\":{\"spec\":\"{\\n $schema: \\\"https://vega.github.io/schema/vega-lite/v2.json\\\"\\n title: \\\"Capacity in Gbps - 0.001% loss ratio\\\"\\n data: {\\n url: {\\n %context%: true\\n %timefield%: \\\"@timestamp\\\"\\n index: resu*\\n body: {\\n _source: [\\\"@timestamp\\\", \\\"_source\\\", \\\"offered_tx_rate_bps\\\", \\\"flow_count\\\", \\\"frame_size\\\", \\\"user_label\\\"]\\n },\\n size: 10000\\n },\\n format: { property: \\\"hits.hits\\\" }\\n },\\n transform: [\\n { calculate: \\\"datum._source['offered_tx_rate_bps'] / 1000000000\\\" as: \\\"Offered load (Gbps)\\\"},\\n { calculate: \\\"datum._source['flow_count']\\\" as: \\\"Flow count\\\"},\\n { calculate: \\\"isNaN(toNumber(datum._source['frame_size'])) ? 362 : toNumber(datum._source['frame_size'])\\\" as: \\\"Frame size (bytes)\\\"}\\n { calculate: \\\"datum._source['user_label'] + '-' + datum._source['flow_count']\\\" as: \\\"label\\\"}\\n ],\\n center: true,\\n hconcat: [\\n {\\n width:10,\\n selection: {\\n legendSel: {\\n type: \\\"multi\\\",\\n encodings: [ \\\"color\\\", \\\"shape\\\" ],\\n toggle: \\\"event.shiftKey\\\"\\n }\\n },\\n encoding: {\\n y: {\\n field: \\\"label\\\",\\n type: \\\"nominal\\\",\\n axis: {\\n title: \\\"\\\",\\n domain: false,\\n ticks: false,\\n offset: 10\\n },\\n },\\n color: {\\n condition: {\\n selection: \\\"legendSel\\\",\\n field: \\\"label\\\",\\n type: \\\"nominal\\\",\\n legend: null\\n },\\n value: \\\"lightgrey\\\"\\n }\\n },\\n mark: {\\n type: \\\"square\\\",\\n size: 120,\\n opacity: 1\\n }\\n },\\n {\\n width:500,\\n height:280,\\n transform: [\\n {filter: { selection: \\\"legendSel\\\"}}\\n \\n ],\\n mark: {\\n \\\"type\\\": \\\"point\\\",\\n \\\"tooltip\\\": true\\n },\\n selection: {\\n grid: {\\n type: \\\"interval\\\",\\n resolve: \\\"global\\\",\\n bind: \\\"scales\\\",\\n translate: \\\"[mousedown[!event.shiftKey], window:mouseup] > window:mousemove!\\\",\\n zoom: \\\"wheel![!event.shiftKey]\\\"\\n },\\n pts: {\\n type: \\\"single\\\",\\n fields: [\\\"label\\\"]\\n }\\n },\\n encoding: {\\n x: {\\n field: \\\"Frame size (bytes)\\\",\\n type: \\\"quantitative\\\"\\n }\\n y: {\\n field: \\\"Offered load (Gbps)\\\",\\n type: \\\"quantitative\\\"\\n }\\n color: {\\n field: \\\"label\\\", \\\"type\\\": \\\"nominal\\\",\\n \\\"legend\\\": null\\n }\\n shape: {\\n field: \\\"Flow count\\\",\\n type: \\\"nominal\\\"\\n }\\n tooltip: {\\n \\\"field\\\": \\\"Offered load (Gbps)\\\",\\n \\\"type\\\": \\\"quantitative\\\"\\n }\\n }\\n }\\n ]\\n}\"},\"title\":\"[NDR] Capacity in Gbps - Scatter plot\"}"},"id":"82fc8690-e77c-11ea-bb67-9b8ce9c25c00","migrationVersion":{"visualization":"7.8.0"},"references":[{"id":"e0939790-e78f-11ea-8ca2-35af0cc4217c","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index","type":"index-pattern"},{"id":"e0939790-e78f-11ea-8ca2-35af0cc4217c","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[1].meta.index","type":"index-pattern"},{"id":"e0939790-e78f-11ea-8ca2-35af0cc4217c","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[2].meta.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-10-06T12:43:07.344Z","version":"WzE2MjAsMTJd"}
+{"attributes":{"description":"NDR / PDR scatter plot - in Mpps","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"key\":\"type.keyword\",\"negate\":true,\"params\":{\"query\":\"single_run\"},\"type\":\"phrase\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match_phrase\":{\"type.keyword\":\"single_run\"}}},{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"key\":\"frame_size\",\"negate\":true,\"params\":{\"query\":\"IMIX\"},\"type\":\"phrase\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[1].meta.index\"},\"query\":{\"match_phrase\":{\"frame_size\":\"IMIX\"}}}]}"},"title":"[NDR] Capacity in Mpps - Scatter plot","uiStateJSON":"{}","version":1,"visState":"{\"type\":\"vega\",\"aggs\":[],\"params\":{\"spec\":\"{\\n $schema: \\\"https://vega.github.io/schema/vega-lite/v2.json\\\"\\n title: \\\"Capacity in Mpps - 0,001% loss ratio\\\"\\n data: {\\n url: {\\n %context%: true\\n %timefield%: \\\"@timestamp\\\"\\n index: resu*\\n body: {\\n _source: [\\\"@timestamp\\\", \\\"_source\\\", \\\"rate_pps\\\", \\\"flow_count\\\", \\\"frame_size\\\", \\\"user_label\\\"]\\n },\\n size: 10000\\n },\\n format: { property: \\\"hits.hits\\\" }\\n },\\n transform: [\\n { calculate: \\\"datum._source['rate_pps'] / 1000000\\\" as: \\\"Offered load (Mpps)\\\"},\\n { calculate: \\\"datum._source['flow_count']\\\" as: \\\"Flow count\\\"},\\n { calculate: \\\"isNaN(toNumber(datum._source['frame_size'])) ? 362 : toNumber(datum._source['frame_size'])\\\" as: \\\"Frame size (bytes)\\\"}\\n { calculate: \\\"datum._source['user_label'] + '-' + datum._source['flow_count']\\\" as: \\\"label\\\"}\\n ],\\n center: true,\\n hconcat: [\\n {\\n width:10,\\n selection: {\\n legendSel: {\\n type: \\\"multi\\\",\\n encodings: [ \\\"color\\\", \\\"shape\\\" ],\\n toggle: \\\"event.shiftKey\\\"\\n }\\n },\\n encoding: {\\n y: {\\n field: \\\"label\\\",\\n type: \\\"nominal\\\",\\n axis: {\\n title: \\\"\\\",\\n domain: false,\\n ticks: false,\\n offset: 10\\n },\\n },\\n color: {\\n condition: {\\n selection: \\\"legendSel\\\",\\n field: \\\"label\\\",\\n type: \\\"nominal\\\",\\n legend: null\\n },\\n value: \\\"lightgrey\\\"\\n }\\n },\\n mark: {\\n type: \\\"square\\\",\\n size: 120,\\n opacity: 1\\n }\\n },\\n {\\n width:500,\\n height:280,\\n transform: [\\n {filter: { selection: \\\"legendSel\\\"}}\\n \\n ],\\n mark: {\\n \\\"type\\\": \\\"point\\\",\\n \\\"tooltip\\\": true\\n },\\n selection: {\\n grid: {\\n type: \\\"interval\\\",\\n resolve: \\\"global\\\",\\n bind: \\\"scales\\\",\\n translate: \\\"[mousedown[!event.shiftKey], window:mouseup] > window:mousemove!\\\",\\n zoom: \\\"wheel![!event.shiftKey]\\\"\\n },\\n pts: {\\n type: \\\"single\\\",\\n fields: [\\\"label\\\"]\\n }\\n },\\n encoding: {\\n x: {\\n field: \\\"Frame size (bytes)\\\",\\n type: \\\"quantitative\\\"\\n }\\n y: {\\n field: \\\"Offered load (Mpps)\\\",\\n type: \\\"quantitative\\\"\\n }\\n color: {\\n field: \\\"label\\\", \\\"type\\\": \\\"nominal\\\",\\n \\\"legend\\\": null\\n }\\n shape: {\\n field: \\\"Flow count\\\",\\n type: \\\"nominal\\\"\\n }\\n tooltip: {\\n \\\"field\\\": \\\"Offered load (Mpps)\\\",\\n \\\"type\\\": \\\"quantitative\\\"\\n }\\n }\\n }\\n ]\\n}\"},\"title\":\"[NDR] Capacity in Mpps - Scatter plot\"}"},"id":"51110c20-e879-11ea-9fcb-3bb6d0d175f6","migrationVersion":{"visualization":"7.8.0"},"references":[{"id":"e0939790-e78f-11ea-8ca2-35af0cc4217c","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index","type":"index-pattern"},{"id":"e0939790-e78f-11ea-8ca2-35af0cc4217c","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[1].meta.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-10-06T12:44:30.320Z","version":"WzE2MjIsMTJd"}
+{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}"},"optionsJSON":"{\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"embeddableConfig\":{\"title\":\"Max value over 3 measurements\"},\"gridData\":{\"h\":15,\"i\":\"e9186fd0-d3a5-47ae-88c5-20cf0e44dc30\",\"w\":24,\"x\":0,\"y\":0},\"panelIndex\":\"e9186fd0-d3a5-47ae-88c5-20cf0e44dc30\",\"title\":\"Max value over 3 measurements\",\"version\":\"7.8.0\",\"panelRefName\":\"panel_0\"},{\"embeddableConfig\":{\"title\":\"Scatter plot\"},\"gridData\":{\"h\":15,\"i\":\"89f92958-de63-4244-af53-9ef60958de41\",\"w\":24,\"x\":24,\"y\":0},\"panelIndex\":\"89f92958-de63-4244-af53-9ef60958de41\",\"title\":\"Scatter plot\",\"version\":\"7.8.0\",\"panelRefName\":\"panel_1\"},{\"embeddableConfig\":{\"title\":\"Max value over 3 measurements\"},\"gridData\":{\"h\":15,\"i\":\"87ec5dff-5c9b-4c88-b079-cbc63b4275ad\",\"w\":24,\"x\":0,\"y\":15},\"panelIndex\":\"87ec5dff-5c9b-4c88-b079-cbc63b4275ad\",\"title\":\"Max value over 3 measurements\",\"version\":\"7.8.0\",\"panelRefName\":\"panel_2\"},{\"embeddableConfig\":{\"title\":\"Scatter plot\"},\"gridData\":{\"h\":15,\"i\":\"813ff050-1ec7-48f4-82db-b63ab98e40c6\",\"w\":24,\"x\":24,\"y\":15},\"panelIndex\":\"813ff050-1ec7-48f4-82db-b63ab98e40c6\",\"title\":\"Scatter plot\",\"version\":\"7.8.0\",\"panelRefName\":\"panel_3\"},{\"embeddableConfig\":{},\"gridData\":{\"h\":10,\"i\":\"d806469f-2ea3-4b45-99d8-acc7f09ee8f5\",\"w\":48,\"x\":0,\"y\":30},\"panelIndex\":\"d806469f-2ea3-4b45-99d8-acc7f09ee8f5\",\"version\":\"7.8.0\",\"panelRefName\":\"panel_4\"}]","timeRestore":false,"title":"Synthesis Max Throughput - NDR (0.001% loss ratio)","version":1},"id":"46874a00-e2b9-11ea-bdc0-1fe1db0b9cb6","migrationVersion":{"dashboard":"7.3.0"},"references":[{"id":"23b0eb40-e60a-11ea-bdc0-1fe1db0b9cb6","name":"panel_0","type":"visualization"},{"id":"82fc8690-e77c-11ea-bb67-9b8ce9c25c00","name":"panel_1","type":"visualization"},{"id":"1b471fa0-e6b0-11ea-bdc0-1fe1db0b9cb6","name":"panel_2","type":"visualization"},{"id":"51110c20-e879-11ea-9fcb-3bb6d0d175f6","name":"panel_3","type":"visualization"},{"id":"0d2c4070-e6e3-11ea-a933-05dd8fc4d76f","name":"panel_4","type":"visualization"}],"type":"dashboard","updated_at":"2020-10-06T12:46:24.279Z","version":"WzE2MzEsMTJd"}
+{"attributes":{"buildNum":16588,"defaultIndex":"39955f20-78ac-11ea-ae77-8339e5fd808c"},"id":"6.2.2","references":[],"type":"config","updated_at":"2020-07-21T08:47:10.197Z","version":"WzYsMV0="}
+{"attributes":{"buildNum":20352,"defaultIndex":"39955f20-78ac-11ea-ae77-8339e5fd808c"},"id":"6.8.0","references":[],"type":"config","updated_at":"2020-07-30T15:12:33.985Z","version":"WzE4LDFd"}
+{"attributes":{"buildNum":31997,"defaultIndex":"e0939790-e78f-11ea-8ca2-35af0cc4217c"},"id":"7.8.0","references":[],"type":"config","updated_at":"2020-08-27T09:31:50.697Z","version":"Wzc5MCw0XQ=="}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[{\"$state\":{\"store\":\"appState\"},\"exists\":{\"field\":\"theoretical_tx_rate_bps\"},\"meta\":{\"alias\":null,\"disabled\":false,\"key\":\"theoretical_tx_rate_bps\",\"negate\":false,\"type\":\"exists\",\"value\":\"exists\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"}}]}"},"title":"[NDR] Capacity in Gbps with theoretical max rate - Line chart","uiStateJSON":"{}","version":1,"visState":"{\"type\":\"vega\",\"aggs\":[],\"params\":{\"spec\":\"{\\n $schema: https: //vega.github.io/schema/vega-lite/v2.json\\n title: \\\"Capacity in Gbps - 0,001% loss ratio\\\"\\n data: {\\n url: {\\n %context%: true\\n %timefield%: \\\"@timestamp\\\"\\n index: resu*\\n body: {\\n _source: [\\\"@timestamp\\\", \\\"_source\\\", \\\"offered_tx_rate_bps\\\", \\\"theoretical_tx_rate_bps\\\", \\\"flow_count\\\", \\\"frame_size\\\", \\\"user_label\\\"]\\n },\\n size: 10000\\n },\\n format: { property: \\\"hits.hits\\\" }\\n },\\n transform: [\\n { calculate: \\\"datum._source['offered_tx_rate_bps'] / 1000000000\\\" as: \\\"offered_load_gbps\\\"},\\n { calculate: \\\"datum._source['theoretical_tx_rate_bps'] / 1000000000\\\" as: \\\"theoretical_tx_rate_bps\\\"},\\n { calculate: \\\"datum._source['flow_count']\\\" as: \\\"flow_count\\\"},\\n { calculate: \\\"isNaN(toNumber(datum._source['frame_size'])) ? 362 : toNumber(datum._source['frame_size'])\\\" as: \\\"frame_size\\\"},\\n { calculate: \\\"datum._source['user_label'] + '-' + datum._source['flow_count']\\\" as: \\\"label\\\"}\\n { aggregate: [{op: \\\"max\\\", field: \\\"offered_load_gbps\\\", as: \\\"max_offered_load_gbps\\\"}, {op: \\\"max\\\", field: \\\"theoretical_tx_rate_bps\\\", as: \\\"theoretical_tx_rate_bps\\\"}], groupby: [\\\"frame_size\\\", \\\"label\\\",\\\"flow_count\\\"]}\\n ],\\n center: true,\\n hconcat: [\\n {\\n width:10,\\n selection: {\\n legendSel: {\\n type: \\\"multi\\\",\\n encodings: [ \\\"color\\\", \\\"shape\\\" ],\\n toggle: \\\"event.shiftKey\\\"\\n }\\n },\\n encoding: {\\n y: {\\n field: \\\"label\\\",\\n type: \\\"nominal\\\",\\n axis: {\\n title: \\\"\\\",\\n domain: false,\\n ticks: false,\\n offset: 10\\n },\\n },\\n color: {\\n condition: {\\n selection: \\\"legendSel\\\",\\n field: \\\"label\\\",\\n type: \\\"nominal\\\",\\n legend: null\\n },\\n value: \\\"lightgrey\\\"\\n }\\n },\\n mark: {\\n type: \\\"square\\\",\\n size: 120,\\n opacity: 1\\n }\\n },\\n {\\n layer: [\\n {\\n mark: {\\n type: \\\"line\\\",\\n tooltip: true,\\n point: true\\n },\\n encoding: {\\n x: { field: \\\"frame_size\\\", type: \\\"quantitative\\\", title: \\\"Frame size (bytes)\\\", axis: {offset: 10} }\\n y: { field: \\\"theoretical_tx_rate_bps\\\", type: \\\"quantitative\\\", title: \\\"Theoretical rate (Gbps)\\\" , axis: {offset: 10} }\\n strokeDash: {\\\"field\\\": \\\"theoretical_tx_rate_bps\\\", \\\"type\\\": \\\"nominal\\\"}\\n tooltip: [{\\\"field\\\": \\\"theoretical_tx_rate_bps\\\", \\\"type\\\": \\\"quantitative\\\", title: \\\"theoretical max capacity\\\"}],\\n color: { \\\"value\\\": \\\"red\\\"}\\n }\\n },\\n {\\n width:500,\\n height:280,\\n transform: [\\n {filter: { selection: \\\"legendSel\\\"}}\\n ],\\n mark: {\\n type: \\\"line\\\",\\n tooltip: true,\\n point: true\\n },\\n selection: {\\n grid: {\\n type: \\\"interval\\\",\\n resolve: \\\"global\\\",\\n bind: \\\"scales\\\",\\n translate: \\\"[mousedown[!event.shiftKey], window:mouseup] > window:mousemove!\\\",\\n zoom: \\\"wheel![!event.shiftKey]\\\"\\n },\\n pts: {\\n type: \\\"single\\\",\\n fields: [\\\"Label\\\"]\\n }\\n },\\n encoding: {\\n x: { field: \\\"frame_size\\\", type: \\\"quantitative\\\", title: \\\"Frame size (bytes)\\\", axis: {offset: 10} }\\n y: { field: \\\"max_offered_load_gbps\\\", type: \\\"quantitative\\\", title: \\\"Offered load (Gbps)\\\" , axis: {offset: 10} }\\n color: {field: \\\"label\\\", \\\"type\\\": \\\"nominal\\\",\\n \\\"legend\\\": null}\\n shape: {field: \\\"flow_count\\\", type: \\\"nominal\\\"}\\n tooltip: {\\\"field\\\": \\\"max_offered_load_gbps\\\", \\\"type\\\": \\\"quantitative\\\"}\\n }\\n }\\n ]\\n }\\n ]\\n}\"},\"title\":\"[NDR] Capacity in Gbps with theoretical max rate - Line chart\"}"},"id":"966a5990-0712-11eb-92f0-3518df6b43ff","migrationVersion":{"visualization":"7.8.0"},"references":[{"id":"e0939790-e78f-11ea-8ca2-35af0cc4217c","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-10-06T12:34:38.736Z","version":"WzE1OTIsMTJd"}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\",\"filter\":[{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"key\":\"type.keyword\",\"negate\":true,\"params\":{\"query\":\"single_run\"},\"type\":\"phrase\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match_phrase\":{\"type.keyword\":\"single_run\"}}},{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"key\":\"frame_size\",\"negate\":true,\"params\":{\"query\":\"IMIX\"},\"type\":\"phrase\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[1].meta.index\"},\"query\":{\"match_phrase\":{\"frame_size\":\"IMIX\"}}}]}"},"title":"[NDR] Capacity in Gbps - bar chart","uiStateJSON":"{}","version":1,"visState":"{\"type\":\"histogram\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"max\",\"schema\":\"metric\",\"params\":{\"field\":\"rate_bps\",\"customLabel\":\"Offered load (Gbps)\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"frame_size_int\",\"orderBy\":\"_key\",\"order\":\"asc\",\"size\":50,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Frame size (bytes)\"}},{\"id\":\"3\",\"enabled\":true,\"type\":\"significant_terms\",\"schema\":\"group\",\"params\":{\"field\":\"user_label.keyword\",\"size\":10,\"customLabel\":\"Label\"}},{\"id\":\"4\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"flow_count\",\"orderBy\":\"_key\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}],\"params\":{\"type\":\"histogram\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100,\"rotate\":0},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\",\"setYExtents\":false},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Offered load (Gbps)\"}}],\"seriesParams\":[{\"show\":true,\"type\":\"histogram\",\"mode\":\"normal\",\"data\":{\"label\":\"Offered load (Gbps)\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"labels\":{\"show\":false},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"}},\"title\":\"[NDR] Capacity in Gbps - bar chart\"}"},"id":"8c87f800-edeb-11ea-a706-3fce679b2102","migrationVersion":{"visualization":"7.8.0"},"references":[{"id":"e0939790-e78f-11ea-8ca2-35af0cc4217c","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"},{"id":"e0939790-e78f-11ea-8ca2-35af0cc4217c","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index","type":"index-pattern"},{"id":"e0939790-e78f-11ea-8ca2-35af0cc4217c","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[1].meta.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-09-10T12:50:59.005Z","version":"WzEzNjIsOF0="}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\",\"filter\":[{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"key\":\"type.keyword\",\"negate\":true,\"params\":{\"query\":\"single_run\"},\"type\":\"phrase\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match_phrase\":{\"type.keyword\":\"single_run\"}}},{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"key\":\"frame_size\",\"negate\":true,\"params\":{\"query\":\"IMIX\"},\"type\":\"phrase\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[1].meta.index\"},\"query\":{\"match_phrase\":{\"frame_size\":\"IMIX\"}}}]}"},"title":"[NDR] Capacity in Mpps - bar chart","uiStateJSON":"{}","version":1,"visState":"{\"type\":\"histogram\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"max\",\"schema\":\"metric\",\"params\":{\"field\":\"rate_pps\",\"customLabel\":\"Offered load (Mpps)\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"frame_size_int\",\"orderBy\":\"_key\",\"order\":\"asc\",\"size\":50,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Frame size (bytes)\"}},{\"id\":\"3\",\"enabled\":true,\"type\":\"significant_terms\",\"schema\":\"group\",\"params\":{\"field\":\"user_label.keyword\",\"size\":10,\"customLabel\":\"Label\"}},{\"id\":\"4\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"flow_count\",\"orderBy\":\"_key\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}],\"params\":{\"type\":\"histogram\",\"grid\":{\"categoryLines\":true,\"valueAxis\":\"ValueAxis-1\"},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100,\"rotate\":0},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\",\"setYExtents\":false},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Offered load (Mpps)\"}}],\"seriesParams\":[{\"show\":true,\"type\":\"histogram\",\"mode\":\"normal\",\"data\":{\"label\":\"Offered load (Mpps)\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"lineWidth\":2,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"labels\":{\"show\":false},\"thresholdLine\":{\"show\":false,\"value\":20,\"width\":1,\"style\":\"full\",\"color\":\"#E7664C\"}},\"title\":\"[NDR] Capacity in Mpps - bar chart\"}"},"id":"8c14a8b0-e6d8-11ea-a933-05dd8fc4d76f","migrationVersion":{"visualization":"7.8.0"},"references":[{"id":"e0939790-e78f-11ea-8ca2-35af0cc4217c","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"},{"id":"e0939790-e78f-11ea-8ca2-35af0cc4217c","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index","type":"index-pattern"},{"id":"e0939790-e78f-11ea-8ca2-35af0cc4217c","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[1].meta.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-09-10T12:51:33.492Z","version":"WzEzNjQsOF0="}
+{"attributes":{"description":"NDR / PDR line chart - in Mpps","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"key\":\"type.keyword\",\"negate\":true,\"params\":{\"query\":\"single_run\"},\"type\":\"phrase\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match_phrase\":{\"type.keyword\":\"single_run\"}}},{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"key\":\"frame_size\",\"negate\":true,\"params\":{\"query\":\"IMIX\"},\"type\":\"phrase\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[1].meta.index\"},\"query\":{\"match_phrase\":{\"frame_size\":\"IMIX\"}}},{\"$state\":{\"store\":\"appState\"},\"exists\":{\"field\":\"theoretical_tx_rate_pps\"},\"meta\":{\"alias\":null,\"disabled\":false,\"key\":\"theoretical_tx_rate_pps\",\"negate\":false,\"type\":\"exists\",\"value\":\"exists\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[2].meta.index\"}}]}"},"title":"[NDR] Capacity in Mpps with theoretical max rate - Line chart","uiStateJSON":"{}","version":1,"visState":"{\"type\":\"vega\",\"aggs\":[],\"params\":{\"spec\":\"{\\n $schema: https: //vega.github.io/schema/vega-lite/v2.json\\n title: \\\"Capacity in Mpps - 0,001% loss ratio\\\"\\n data: {\\n url: {\\n %context%: true\\n %timefield%: \\\"@timestamp\\\"\\n index: resu*\\n body: {\\n _source: [\\\"@timestamp\\\", \\\"_source\\\", \\\"theoretical_tx_rate_pps\\\", \\\"rate_pps\\\", \\\"flow_count\\\", \\\"frame_size\\\", \\\"user_label\\\", \\\"type\\\"]\\n },\\n size: 10000\\n },\\n format: { property: \\\"hits.hits\\\" }\\n },\\n\\n transform: [\\n { calculate: \\\"datum._source['rate_pps'] / 1000000\\\" as: \\\"offered_load_pps\\\"},\\n { calculate: \\\"datum._source['theoretical_tx_rate_pps'] / 1000000\\\" as: \\\"theoretical_tx_rate_pps\\\"},\\n { calculate: \\\"datum._source['flow_count']\\\" as: \\\"flow_count\\\"},\\n { calculate: \\\"isNaN(toNumber(datum._source['frame_size'])) ? 362 : toNumber(datum._source['frame_size'])\\\" as: \\\"frame_size\\\"},\\n { calculate: \\\"datum._source['user_label'] + '-' + datum._source['flow_count']\\\" as: \\\"label\\\"}\\n { aggregate: [{op: \\\"max\\\", field: \\\"offered_load_pps\\\", as: \\\"max_offered_load_pps\\\"}, {op: \\\"max\\\", field: \\\"theoretical_tx_rate_pps\\\", as: \\\"theoretical_tx_rate_pps\\\"}], groupby: [\\\"frame_size\\\", \\\"label\\\",\\\"flow_count\\\"]}\\n \\n ],\\n center: true,\\n hconcat: [\\n {\\n width:10,\\n selection: {\\n legendSel: {\\n type: \\\"multi\\\",\\n encodings: [ \\\"color\\\", \\\"shape\\\" ],\\n toggle: \\\"event.shiftKey\\\"\\n }\\n },\\n encoding: {\\n y: {\\n field: \\\"label\\\",\\n type: \\\"nominal\\\",\\n axis: {\\n title: \\\"\\\",\\n domain: false,\\n ticks: false,\\n offset: 10\\n },\\n },\\n color: {\\n condition: {\\n selection: \\\"legendSel\\\",\\n field: \\\"label\\\",\\n type: \\\"nominal\\\",\\n legend: null\\n },\\n value: \\\"lightgrey\\\"\\n }\\n },\\n mark: {\\n type: \\\"square\\\",\\n size: 120,\\n opacity: 1\\n }\\n },\\n {\\n layer: [{\\n mark: {\\n type: \\\"line\\\",\\n tooltip: true,\\n point: true\\n },\\n encoding: {\\n x: { field: \\\"frame_size\\\", type: \\\"quantitative\\\", title: \\\"Frame size (bytes)\\\", axis: {offset: 10} }\\n y: { field: \\\"theoretical_tx_rate_pps\\\", type: \\\"quantitative\\\", title: \\\"Offered load (Mpps)\\\" , axis: {offset: 10} }\\n strokeDash: {\\\"field\\\": \\\"theoretical_tx_rate_pps\\\", \\\"type\\\": \\\"nominal\\\"}\\n tooltip: [{\\\"field\\\": \\\"theoretical_tx_rate_pps\\\", \\\"type\\\": \\\"quantitative\\\", title: \\\"theoretical max capacity\\\"}],\\n color: { \\\"value\\\": \\\"red\\\"}\\n }\\n },{\\n width:500,\\n height:280,\\n transform: [\\n {filter: { selection: \\\"legendSel\\\"}}\\n \\n ],mark: {\\n type: \\\"line\\\",\\n tooltip: true,\\n point: true\\n },\\n selection: {\\n grid: {\\n type: \\\"interval\\\",\\n resolve: \\\"global\\\",\\n bind: \\\"scales\\\",\\n translate: \\\"[mousedown[!event.shiftKey], window:mouseup] > window:mousemove!\\\",\\n zoom: \\\"wheel![!event.shiftKey]\\\"\\n },\\n pts: {\\n type: \\\"single\\\",\\n fields: [\\\"Label\\\"]\\n }\\n },\\n encoding: {\\n x: { field: \\\"frame_size\\\", type: \\\"quantitative\\\", title: \\\"Frame size (bytes)\\\", axis: {offset: 10} }\\n y: { field: \\\"max_offered_load_pps\\\", type: \\\"quantitative\\\", title: \\\"Offered load (Mpps)\\\" , axis: {offset: 10} }\\n color: {field: \\\"label\\\", \\\"type\\\": \\\"nominal\\\",\\n \\\"legend\\\": null}\\n tooltip: {\\\"field\\\": \\\"max_offered_load_pps\\\", \\\"type\\\": \\\"quantitative\\\"},\\n shape: {field: \\\"flow_count\\\", type: \\\"nominal\\\"}\\n }\\n }\\n ]\\n }\\n \\n ]\\n}\"},\"title\":\"[NDR] Capacity in Mpps with theoretical max rate - Line chart\"}"},"id":"a523c930-07d0-11eb-92f0-3518df6b43ff","migrationVersion":{"visualization":"7.8.0"},"references":[{"id":"e0939790-e78f-11ea-8ca2-35af0cc4217c","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index","type":"index-pattern"},{"id":"e0939790-e78f-11ea-8ca2-35af0cc4217c","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[1].meta.index","type":"index-pattern"},{"id":"e0939790-e78f-11ea-8ca2-35af0cc4217c","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[2].meta.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-10-06T12:37:07.011Z","version":"WzE1OTgsMTJd"}
+{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}"},"optionsJSON":"{\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"version\":\"7.8.0\",\"gridData\":{\"h\":15,\"i\":\"c6f77fa7-0493-4ef6-b995-9250039f26e0\",\"w\":24,\"x\":0,\"y\":0},\"panelIndex\":\"c6f77fa7-0493-4ef6-b995-9250039f26e0\",\"embeddableConfig\":{},\"panelRefName\":\"panel_0\"},{\"version\":\"7.8.0\",\"gridData\":{\"h\":15,\"i\":\"0b349901-c6f5-4a35-ad44-5331d75ceb8c\",\"w\":24,\"x\":24,\"y\":0},\"panelIndex\":\"0b349901-c6f5-4a35-ad44-5331d75ceb8c\",\"embeddableConfig\":{},\"panelRefName\":\"panel_1\"},{\"version\":\"7.8.0\",\"gridData\":{\"h\":15,\"i\":\"e7f9f670-3866-4795-a83e-3b208990262d\",\"w\":24,\"x\":24,\"y\":15},\"panelIndex\":\"e7f9f670-3866-4795-a83e-3b208990262d\",\"embeddableConfig\":{},\"panelRefName\":\"panel_2\"},{\"version\":\"7.8.0\",\"gridData\":{\"h\":16,\"i\":\"7ad18ce1-1916-4d5b-abe8-340571feb151\",\"w\":48,\"x\":0,\"y\":30},\"panelIndex\":\"7ad18ce1-1916-4d5b-abe8-340571feb151\",\"embeddableConfig\":{},\"panelRefName\":\"panel_3\"},{\"version\":\"7.8.0\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"29117e66-cb29-43fc-ba6f-5f61d356a236\"},\"panelIndex\":\"29117e66-cb29-43fc-ba6f-5f61d356a236\",\"embeddableConfig\":{},\"panelRefName\":\"panel_4\"}]","timeRestore":false,"title":"Comparison synthesis dashboard with max theoretical value","version":1},"id":"81cf0e70-070a-11eb-92f0-3518df6b43ff","migrationVersion":{"dashboard":"7.3.0"},"references":[{"id":"966a5990-0712-11eb-92f0-3518df6b43ff","name":"panel_0","type":"visualization"},{"id":"8c87f800-edeb-11ea-a706-3fce679b2102","name":"panel_1","type":"visualization"},{"id":"8c14a8b0-e6d8-11ea-a933-05dd8fc4d76f","name":"panel_2","type":"visualization"},{"id":"38cecb10-eded-11ea-a706-3fce679b2102","name":"panel_3","type":"visualization"},{"id":"a523c930-07d0-11eb-92f0-3518df6b43ff","name":"panel_4","type":"visualization"}],"type":"dashboard","updated_at":"2020-10-06T12:37:58.211Z","version":"WzE2MDIsMTJd"}
+{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\",\"filter\":[{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"key\":\"type.keyword\",\"negate\":true,\"params\":{\"query\":\"single_run\"},\"type\":\"phrase\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match_phrase\":{\"type.keyword\":\"single_run\"}}}]}"},"title":"IMIX KPI","uiStateJSON":"{}","version":1,"visState":"{\"type\":\"metric\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"max\",\"schema\":\"metric\",\"params\":{\"field\":\"rate_bps\",\"customLabel\":\"IMIX Offered load (Mbps)\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"significant_terms\",\"schema\":\"group\",\"params\":{\"field\":\"user_label.keyword\",\"size\":10,\"customLabel\":\"label\"}}],\"params\":{\"addTooltip\":true,\"addLegend\":false,\"type\":\"metric\",\"metric\":{\"percentageMode\":false,\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"metricColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"labels\":{\"show\":true},\"invertColors\":false,\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}},\"title\":\"IMIX KPI\"}"},"id":"83434d80-e882-11ea-9fcb-3bb6d0d175f6","migrationVersion":{"visualization":"7.8.0"},"references":[{"id":"e0939790-e78f-11ea-8ca2-35af0cc4217c","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"},{"id":"e0939790-e78f-11ea-8ca2-35af0cc4217c","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-08-27T16:29:43.383Z","version":"Wzk4Miw0XQ=="}
+{"attributes":{"description":"NDR / PDR scatter plot - in Mpps","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"key\":\"type.keyword\",\"negate\":true,\"params\":{\"query\":\"single_run\"},\"type\":\"phrase\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match_phrase\":{\"type.keyword\":\"single_run\"}}},{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"key\":\"frame_size\",\"negate\":true,\"params\":{\"query\":\"IMIX\"},\"type\":\"phrase\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[1].meta.index\"},\"query\":{\"match_phrase\":{\"frame_size\":\"IMIX\"}}},{\"$state\":{\"store\":\"appState\"},\"exists\":{\"field\":\"theoretical_tx_rate_pps\"},\"meta\":{\"alias\":null,\"disabled\":false,\"key\":\"theoretical_tx_rate_pps\",\"negate\":false,\"type\":\"exists\",\"value\":\"exists\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[2].meta.index\"}}]}"},"title":"[NDR] Capacity in Mpps with theoretical max rate - Scatter plot","uiStateJSON":"{}","version":1,"visState":"{\"aggs\":[],\"params\":{\"spec\":\"{\\n $schema: \\\"https://vega.github.io/schema/vega-lite/v2.json\\\"\\n title: \\\"Capacity in Mpps - 0,001% loss ratio\\\"\\n data: {\\n url: {\\n %context%: true\\n %timefield%: \\\"@timestamp\\\"\\n index: resu*\\n body: {\\n _source: [\\\"@timestamp\\\", \\\"_source\\\", \\\"rate_pps\\\", \\\"theoretical_tx_rate_pps\\\", \\\"flow_count\\\", \\\"frame_size\\\", \\\"user_label\\\"]\\n },\\n size: 10000\\n },\\n format: { property: \\\"hits.hits\\\" }\\n },\\n transform: [\\n { calculate: \\\"datum._source['rate_pps'] / 1000000\\\" as: \\\"rate_pps\\\"},\\n { calculate: \\\"datum._source['theoretical_tx_rate_pps'] / 1000000\\\" as: \\\"theoretical_tx_rate_pps\\\"},\\n { calculate: \\\"datum._source['flow_count']\\\" as: \\\"flow_count\\\"},\\n { calculate: \\\"isNaN(toNumber(datum._source['frame_size'])) ? 362 : toNumber(datum._source['frame_size'])\\\" as: \\\"frame_size\\\"}\\n { calculate: \\\"datum._source['user_label'] + '-' + datum._source['flow_count']\\\" as: \\\"label\\\"}\\n ],\\n center: true,\\n hconcat: [\\n {\\n width:10,\\n selection: {\\n legendSel: {\\n type: \\\"multi\\\",\\n encodings: [ \\\"color\\\", \\\"shape\\\" ],\\n toggle: \\\"event.shiftKey\\\"\\n }\\n },\\n encoding: {\\n y: {\\n field: \\\"label\\\",\\n type: \\\"nominal\\\",\\n axis: {\\n title: \\\"\\\",\\n domain: false,\\n ticks: false,\\n offset: 10\\n },\\n },\\n color: {\\n condition: {\\n selection: \\\"legendSel\\\",\\n field: \\\"label\\\",\\n type: \\\"nominal\\\",\\n legend: null\\n },\\n value: \\\"lightgrey\\\"\\n }\\n },\\n mark: {\\n type: \\\"square\\\",\\n size: 120,\\n opacity: 1\\n }\\n },\\n {\\n layer: [\\n {\\n mark: {\\n type: \\\"line\\\",\\n tooltip: true\\n },\\n encoding: {\\n x: { field: \\\"frame_size\\\", type: \\\"quantitative\\\", title: \\\"Frame size (bytes)\\\", axis: {offset: 10} }\\n y: { field: \\\"theoretical_tx_rate_pps\\\", type: \\\"quantitative\\\", title: \\\"Offered load (Mpps)\\\" , axis: {offset: 10} }\\n strokeDash: {\\\"field\\\": \\\"theoretical_tx_rate_pps\\\", \\\"type\\\": \\\"nominal\\\"}\\n tooltip: [{\\\"field\\\": \\\"theoretical_tx_rate_pps\\\", \\\"type\\\": \\\"quantitative\\\", title: \\\"theoretical max capacity\\\"}],\\n color: { \\\"value\\\": \\\"red\\\"}\\n }\\n },\\n {\\n width:500,\\n height:280,\\n transform: [\\n {filter: { selection: \\\"legendSel\\\"}}\\n ],\\n mark: {\\n \\\"type\\\": \\\"point\\\",\\n \\\"tooltip\\\": true\\n },\\n selection: {\\n grid: {\\n type: \\\"interval\\\",\\n resolve: \\\"global\\\",\\n bind: \\\"scales\\\",\\n translate: \\\"[mousedown[!event.shiftKey], window:mouseup] > window:mousemove!\\\",\\n zoom: \\\"wheel![!event.shiftKey]\\\"\\n },\\n pts: {\\n type: \\\"single\\\",\\n fields: [\\\"label\\\"]\\n }\\n },\\n encoding: {\\n x: {\\n field: \\\"frame_size\\\",\\n title: \\\"Frame size (bytes)\\\",\\n type: \\\"quantitative\\\"\\n }\\n y: {\\n field: \\\"rate_pps\\\",\\n title: \\\"Offered load (Mpps)\\\",\\n type: \\\"quantitative\\\"\\n }\\n color: {\\n field: \\\"label\\\", \\\"type\\\": \\\"nominal\\\",\\n \\\"legend\\\": null\\n }\\n shape: {\\n field: \\\"flow_count\\\",\\n type: \\\"nominal\\\"\\n }\\n tooltip: {\\n \\\"field\\\": \\\"rate_pps\\\",\\n \\\"title\\\": \\\"Offered load (Mpps)\\\",\\n \\\"type\\\": \\\"quantitative\\\"\\n }\\n }\\n }\\n ]\\n }\\n ]\\n}\"},\"title\":\"[NDR] Capacity in Mpps with theoretical max rate - Scatter plot\",\"type\":\"vega\"}"},"id":"8eb9cd00-07d2-11eb-92f0-3518df6b43ff","migrationVersion":{"visualization":"7.8.0"},"references":[{"id":"e0939790-e78f-11ea-8ca2-35af0cc4217c","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index","type":"index-pattern"},{"id":"e0939790-e78f-11ea-8ca2-35af0cc4217c","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[1].meta.index","type":"index-pattern"},{"id":"e0939790-e78f-11ea-8ca2-35af0cc4217c","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[2].meta.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-10-06T12:50:53.215Z","version":"WzE2NDksMTJd"}
+{"attributes":{"description":"","filters":[],"query":{"language":"kuery","query":"flow_count:128 or flow_count:2"},"title":"KQL - flow count"},"id":"KQL - flow count","references":[],"type":"query","updated_at":"2020-09-03T14:05:36.549Z","version":"WzExMjcsNV0="}
+{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}"},"optionsJSON":"{\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"version\":\"7.8.0\",\"gridData\":{\"h\":15,\"i\":\"885a2773-bf7e-4c93-a746-dd400ad3b25f\",\"w\":24,\"x\":0,\"y\":0},\"panelIndex\":\"885a2773-bf7e-4c93-a746-dd400ad3b25f\",\"embeddableConfig\":{},\"panelRefName\":\"panel_0\"},{\"version\":\"7.8.0\",\"gridData\":{\"h\":15,\"i\":\"e7f9f670-3866-4795-a83e-3b208990262d\",\"w\":24,\"x\":24,\"y\":15},\"panelIndex\":\"e7f9f670-3866-4795-a83e-3b208990262d\",\"embeddableConfig\":{},\"panelRefName\":\"panel_1\"},{\"version\":\"7.8.0\",\"gridData\":{\"h\":15,\"i\":\"0b349901-c6f5-4a35-ad44-5331d75ceb8c\",\"w\":24,\"x\":24,\"y\":0},\"panelIndex\":\"0b349901-c6f5-4a35-ad44-5331d75ceb8c\",\"embeddableConfig\":{},\"panelRefName\":\"panel_2\"},{\"version\":\"7.8.0\",\"gridData\":{\"x\":0,\"y\":30,\"w\":48,\"h\":16,\"i\":\"7ad18ce1-1916-4d5b-abe8-340571feb151\"},\"panelIndex\":\"7ad18ce1-1916-4d5b-abe8-340571feb151\",\"embeddableConfig\":{},\"panelRefName\":\"panel_3\"},{\"version\":\"7.8.0\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"631f6738-69c3-4637-b9cb-82d2a8cc1fae\"},\"panelIndex\":\"631f6738-69c3-4637-b9cb-82d2a8cc1fae\",\"embeddableConfig\":{},\"panelRefName\":\"panel_4\"}]","timeRestore":false,"title":"Comparison synthesis dashboard","version":1},"id":"c24f4c50-e778-11ea-bb67-9b8ce9c25c00","migrationVersion":{"dashboard":"7.3.0"},"references":[{"id":"23b0eb40-e60a-11ea-bdc0-1fe1db0b9cb6","name":"panel_0","type":"visualization"},{"id":"8c14a8b0-e6d8-11ea-a933-05dd8fc4d76f","name":"panel_1","type":"visualization"},{"id":"8c87f800-edeb-11ea-a706-3fce679b2102","name":"panel_2","type":"visualization"},{"id":"38cecb10-eded-11ea-a706-3fce679b2102","name":"panel_3","type":"visualization"},{"id":"1b471fa0-e6b0-11ea-bdc0-1fe1db0b9cb6","name":"panel_4","type":"visualization"}],"type":"dashboard","updated_at":"2020-09-03T15:32:16.951Z","version":"WzExODYsNV0="}
+{"attributes":{"description":"NDR / PDR scatter plot - in Gbps","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"key\":\"type.keyword\",\"negate\":true,\"params\":{\"query\":\"single_run\"},\"type\":\"phrase\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match_phrase\":{\"type.keyword\":\"single_run\"}}},{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"key\":\"frame_size\",\"negate\":true,\"params\":{\"query\":\"IMIX\"},\"type\":\"phrase\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[1].meta.index\"},\"query\":{\"match_phrase\":{\"frame_size\":\"IMIX\"}}},{\"$state\":{\"store\":\"appState\"},\"exists\":{\"field\":\"theoretical_tx_rate_bps\"},\"meta\":{\"alias\":null,\"disabled\":false,\"key\":\"theoretical_tx_rate_bps\",\"negate\":false,\"type\":\"exists\",\"value\":\"exists\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[2].meta.index\"}}]}"},"title":"[NDR] Capacity in Gbps with theoretical max value - Scatter plot","uiStateJSON":"{}","version":1,"visState":"{\"type\":\"vega\",\"aggs\":[],\"params\":{\"spec\":\"{\\n $schema: \\\"https://vega.github.io/schema/vega-lite/v2.json\\\"\\n title: \\\"Capacity in Gbps - 0,001% loss ratio\\\"\\n data: {\\n url: {\\n %context%: true\\n %timefield%: \\\"@timestamp\\\"\\n index: resu*\\n body: {\\n _source: [\\\"@timestamp\\\", \\\"_source\\\", \\\"offered_tx_rate_bps\\\", \\\"theoretical_tx_rate_bps\\\", \\\"flow_count\\\", \\\"frame_size\\\", \\\"user_label\\\"]\\n },\\n size: 10000\\n },\\n format: { property: \\\"hits.hits\\\" }\\n },\\n transform: [\\n { calculate: \\\"datum._source['offered_tx_rate_bps'] / 1000000000\\\" as: \\\"offered_tx_rate_bps\\\"},\\n { calculate: \\\"datum._source['theoretical_tx_rate_bps'] / 1000000000\\\" as: \\\"theoretical_tx_rate_bps\\\"},\\n { calculate: \\\"datum._source['flow_count']\\\" as: \\\"flow_count\\\"},\\n { calculate: \\\"isNaN(toNumber(datum._source['frame_size'])) ? 362 : toNumber(datum._source['frame_size'])\\\" as: \\\"frame_size\\\"}\\n { calculate: \\\"datum._source['user_label'] + '-' + datum._source['flow_count']\\\" as: \\\"label\\\"}\\n ],\\n center: true,\\n hconcat: [\\n {\\n width:10,\\n selection: {\\n legendSel: {\\n type: \\\"multi\\\",\\n encodings: [ \\\"color\\\", \\\"shape\\\" ],\\n toggle: \\\"event.shiftKey\\\"\\n }\\n },\\n encoding: {\\n y: {\\n field: \\\"label\\\",\\n type: \\\"nominal\\\",\\n axis: {\\n title: \\\"\\\",\\n domain: false,\\n ticks: false,\\n offset: 10\\n },\\n },\\n color: {\\n condition: {\\n selection: \\\"legendSel\\\",\\n field: \\\"label\\\",\\n type: \\\"nominal\\\",\\n legend: null\\n },\\n value: \\\"lightgrey\\\"\\n }\\n },\\n mark: {\\n type: \\\"square\\\",\\n size: 120,\\n opacity: 1\\n }\\n },\\n {\\n layer: [\\n {\\n mark: {\\n type: \\\"line\\\",\\n tooltip: true\\n },\\n encoding: {\\n x: { field: \\\"frame_size\\\", type: \\\"quantitative\\\", title: \\\"Frame size (bytes)\\\", axis: {offset: 10} }\\n y: { field: \\\"theoretical_tx_rate_bps\\\", type: \\\"quantitative\\\", title: \\\"Offered load (Gbps)\\\" , axis: {offset: 10} }\\n strokeDash: {\\\"field\\\": \\\"theoretical_tx_rate_bps\\\", \\\"type\\\": \\\"nominal\\\"}\\n tooltip: [{\\\"field\\\": \\\"theoretical_tx_rate_bps\\\", \\\"type\\\": \\\"quantitative\\\", title: \\\"theoretical max capacity\\\"}],\\n color: { \\\"value\\\": \\\"red\\\"}\\n }\\n },\\n {\\n width:500,\\n height:280,\\n transform: [\\n {filter: { selection: \\\"legendSel\\\"}}\\n ],\\n mark: {\\n \\\"type\\\": \\\"point\\\",\\n \\\"tooltip\\\": true\\n },\\n selection: {\\n grid: {\\n type: \\\"interval\\\",\\n resolve: \\\"global\\\",\\n bind: \\\"scales\\\",\\n translate: \\\"[mousedown[!event.shiftKey], window:mouseup] > window:mousemove!\\\",\\n zoom: \\\"wheel![!event.shiftKey]\\\"\\n },\\n pts: {\\n type: \\\"single\\\",\\n fields: [\\\"label\\\"]\\n }\\n },\\n encoding: {\\n x: {\\n field: \\\"frame_size\\\",\\n title: \\\"Frame size (bytes)\\\",\\n type: \\\"quantitative\\\"\\n }\\n y: {\\n field: \\\"offered_tx_rate_bps\\\",\\n title: \\\"Offered load (Gbps)\\\",\\n type: \\\"quantitative\\\"\\n }\\n color: {\\n field: \\\"label\\\", \\\"type\\\": \\\"nominal\\\",\\n \\\"legend\\\": null\\n }\\n shape: {\\n field: \\\"flow_count\\\",\\n type: \\\"nominal\\\"\\n }\\n tooltip: {\\n \\\"field\\\": \\\"offered_tx_rate_bps\\\",\\n \\\"title\\\": \\\"Offered load (Gbps)\\\",\\n \\\"type\\\": \\\"quantitative\\\"\\n }\\n }\\n }\\n ]\\n }\\n ]\\n}\"},\"title\":\"[NDR] Capacity in Gbps with theoretical max value - Scatter plot\"}"},"id":"eea11370-f82a-11ea-8203-0fee5ecd414e","migrationVersion":{"visualization":"7.8.0"},"references":[{"id":"e0939790-e78f-11ea-8ca2-35af0cc4217c","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index","type":"index-pattern"},{"id":"e0939790-e78f-11ea-8ca2-35af0cc4217c","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[1].meta.index","type":"index-pattern"},{"id":"e0939790-e78f-11ea-8ca2-35af0cc4217c","name":"kibanaSavedObjectMeta.searchSourceJSON.filter[2].meta.index","type":"index-pattern"}],"type":"visualization","updated_at":"2020-10-06T12:49:41.894Z","version":"WzE2NDcsMTJd"}
+{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}"},"optionsJSON":"{\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"version\":\"7.8.0\",\"gridData\":{\"h\":10,\"i\":\"d806469f-2ea3-4b45-99d8-acc7f09ee8f5\",\"w\":48,\"x\":0,\"y\":30},\"panelIndex\":\"d806469f-2ea3-4b45-99d8-acc7f09ee8f5\",\"embeddableConfig\":{},\"panelRefName\":\"panel_0\"},{\"version\":\"7.8.0\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"dfc3abc1-8fcf-486f-8b8e-fa8956a4299b\"},\"panelIndex\":\"dfc3abc1-8fcf-486f-8b8e-fa8956a4299b\",\"embeddableConfig\":{},\"panelRefName\":\"panel_1\"},{\"version\":\"7.8.0\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"82bcc455-a312-49dc-b9b7-7414d53cfdd5\"},\"panelIndex\":\"82bcc455-a312-49dc-b9b7-7414d53cfdd5\",\"embeddableConfig\":{},\"panelRefName\":\"panel_2\"},{\"version\":\"7.8.0\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"eb3a0dcc-e55a-4f0b-87e7-70b15f864bf2\"},\"panelIndex\":\"eb3a0dcc-e55a-4f0b-87e7-70b15f864bf2\",\"embeddableConfig\":{},\"panelRefName\":\"panel_3\"},{\"version\":\"7.8.0\",\"gridData\":{\"x\":24,\"y\":15,\"w\":24,\"h\":15,\"i\":\"e6c3eeb1-5a7e-4a3e-89d1-c61193f31ccf\"},\"panelIndex\":\"e6c3eeb1-5a7e-4a3e-89d1-c61193f31ccf\",\"embeddableConfig\":{},\"panelRefName\":\"panel_4\"}]","timeRestore":false,"title":"Synthesis Max Throughput - NDR (0.001% loss ratio) with max theoretical value","version":1},"id":"c61120f0-07d2-11eb-92f0-3518df6b43ff","migrationVersion":{"dashboard":"7.3.0"},"references":[{"id":"0d2c4070-e6e3-11ea-a933-05dd8fc4d76f","name":"panel_0","type":"visualization"},{"id":"966a5990-0712-11eb-92f0-3518df6b43ff","name":"panel_1","type":"visualization"},{"id":"eea11370-f82a-11ea-8203-0fee5ecd414e","name":"panel_2","type":"visualization"},{"id":"a523c930-07d0-11eb-92f0-3518df6b43ff","name":"panel_3","type":"visualization"},{"id":"8eb9cd00-07d2-11eb-92f0-3518df6b43ff","name":"panel_4","type":"visualization"}],"type":"dashboard","updated_at":"2020-10-06T12:52:55.971Z","version":"WzE2NTUsMTJd"}
+{"attributes":{"description":"","filters":[{"$state":{"store":"appState"},"meta":{"alias":null,"disabled":false,"index":"39955f20-78ac-11ea-ae77-8339e5fd808c","key":"flow_count","negate":false,"params":{"query":"2"},"type":"phrase"},"query":{"match_phrase":{"flow_count":"2"}}}],"query":{"language":"kuery","query":""},"title":"flow count 2"},"id":"flow count 2","references":[],"type":"query","updated_at":"2020-08-26T09:25:58.265Z","version":"WzY0Miw0XQ=="}
+{"attributes":{"description":"","filters":[{"$state":{"store":"appState"},"meta":{"alias":null,"disabled":false,"index":"39955f20-78ac-11ea-ae77-8339e5fd808c","key":"user_label.keyword","negate":false,"params":["oslodu_oiaas_g4r1_ovsdpdk_tc20_ndr4latency","icnfvbench_none_none_loopback_tc3"],"type":"phrases","value":"oslodu_oiaas_g4r1_ovsdpdk_tc20_ndr4latency, icnfvbench_none_none_loopback_tc3"},"query":{"bool":{"minimum_should_match":1,"should":[{"match_phrase":{"user_label.keyword":"oslodu_oiaas_g4r1_ovsdpdk_tc20_ndr4latency"}},{"match_phrase":{"user_label.keyword":"icnfvbench_none_none_loopback_tc3"}}]}}},{"$state":{"store":"appState"},"meta":{"alias":null,"disabled":false,"index":"39955f20-78ac-11ea-ae77-8339e5fd808c","key":"flow_count","negate":false,"params":["2","128"],"type":"phrases","value":"2, 128"},"query":{"bool":{"minimum_should_match":1,"should":[{"match_phrase":{"flow_count":"2"}},{"match_phrase":{"flow_count":"128"}}]}}}],"query":{"language":"kuery","query":""},"title":"test filter"},"id":"test filter","references":[],"type":"query","updated_at":"2020-08-26T13:13:10.130Z","version":"WzY3MSw0XQ=="}
+{"exportedCount":24,"missingRefCount":0,"missingReferences":[]} \ No newline at end of file
diff --git a/kibana/visualizations/ndr_capacity_gbps_line_chart.json b/kibana/visualizations/ndr_capacity_gbps_line_chart.json
new file mode 100644
index 0000000..cb696ba
--- /dev/null
+++ b/kibana/visualizations/ndr_capacity_gbps_line_chart.json
@@ -0,0 +1,95 @@
+{
+ $schema: https: //vega.github.io/schema/vega-lite/v2.json
+ title: "Capacity in Gbps - 0,001% loss ratio"
+ data: {
+ url: {
+ %context%: true
+ %timefield%: "@timestamp"
+ index: resu*
+ body: {
+ _source: ["@timestamp", "_source", "offered_tx_rate_bps", "flow_count", "frame_size", "user_label"]
+ },
+ size: 10000
+ },
+ format: { property: "hits.hits" }
+ },
+ transform: [
+ { calculate: "datum._source['offered_tx_rate_bps'] / 1000000000" as: "offered_load_gbps"},
+ { calculate: "datum._source['flow_count']" as: "flow_count"},
+ { calculate: "isNaN(toNumber(datum._source['frame_size'])) ? 362 : toNumber(datum._source['frame_size'])" as: "frame_size"},
+ { calculate: "datum._source['user_label'] + '-' + datum._source['flow_count']" as: "label"}
+ { aggregate: [{op: "max", field: "offered_load_gbps", as: "max_offered_load_gbps"}], groupby: ["frame_size", "label","flow_count"]}
+ ],
+ center: true,
+ hconcat: [
+ {
+ width:10,
+ selection: {
+ legendSel: {
+ type: "multi",
+ encodings: [ "color", "shape" ],
+ toggle: "event.shiftKey"
+ }
+ },
+ encoding: {
+ y: {
+ field: "label",
+ type: "nominal",
+ axis: {
+ title: "",
+ domain: false,
+ ticks: false,
+ offset: 10
+ },
+ },
+ color: {
+ condition: {
+ selection: "legendSel",
+ field: "label",
+ type: "nominal",
+ legend: null
+ },
+ value: "lightgrey"
+ }
+ },
+ mark: {
+ type: "square",
+ size: 120,
+ opacity: 1
+ }
+ },
+ {
+ width:500,
+ height:280,
+ transform: [
+ {filter: { selection: "legendSel"}}
+ ],
+ mark: {
+ type: "line",
+ tooltip: true,
+ point: true
+ },
+ selection: {
+ grid: {
+ type: "interval",
+ resolve: "global",
+ bind: "scales",
+ translate: "[mousedown[!event.shiftKey], window:mouseup] > window:mousemove!",
+ zoom: "wheel![!event.shiftKey]"
+ },
+ pts: {
+ type: "single",
+ fields: ["label"]
+ }
+ },
+ encoding: {
+ x: { field: "frame_size", type: "quantitative", title: "Frame size (bytes)", axis: {offset: 10} }
+ y: { field: "max_offered_load_gbps", type: "quantitative", title: "Offered load (Gbps)" , axis: {offset: 10} }
+ color: {field: "label", "type": "nominal",
+ "legend": null}
+ shape: {field: "flow_count", type: "nominal"}
+ tooltip: {"field": "max_offered_load_gbps", "type": "quantitative"}
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/kibana/visualizations/ndr_capacity_gbps_scatter_plot.json b/kibana/visualizations/ndr_capacity_gbps_scatter_plot.json
new file mode 100644
index 0000000..9908e9d
--- /dev/null
+++ b/kibana/visualizations/ndr_capacity_gbps_scatter_plot.json
@@ -0,0 +1,108 @@
+{
+ $schema: "https://vega.github.io/schema/vega-lite/v2.json"
+ title: "Capacity in Gbps - 0.001% loss ratio"
+ data: {
+ url: {
+ %context%: true
+ %timefield%: "@timestamp"
+ index: resu*
+ body: {
+ _source: ["@timestamp", "_source", "offered_tx_rate_bps", "flow_count", "frame_size", "user_label"]
+ },
+ size: 10000
+ },
+ format: { property: "hits.hits" }
+ },
+ transform: [
+ { calculate: "datum._source['offered_tx_rate_bps'] / 1000000000" as: "Offered load (Gbps)"},
+ { calculate: "datum._source['flow_count']" as: "Flow count"},
+ { calculate: "isNaN(toNumber(datum._source['frame_size'])) ? 362 : toNumber(datum._source['frame_size'])" as: "Frame size (bytes)"}
+ { calculate: "datum._source['user_label'] + '-' + datum._source['flow_count']" as: "label"}
+ ],
+ center: true,
+ hconcat: [
+ {
+ width:10,
+ selection: {
+ legendSel: {
+ type: "multi",
+ encodings: [ "color", "shape" ],
+ toggle: "event.shiftKey"
+ }
+ },
+ encoding: {
+ y: {
+ field: "label",
+ type: "nominal",
+ axis: {
+ title: "",
+ domain: false,
+ ticks: false,
+ offset: 10
+ },
+ },
+ color: {
+ condition: {
+ selection: "legendSel",
+ field: "label",
+ type: "nominal",
+ legend: null
+ },
+ value: "lightgrey"
+ }
+ },
+ mark: {
+ type: "square",
+ size: 120,
+ opacity: 1
+ }
+ },
+ {
+ width:500,
+ height:280,
+ transform: [
+ {filter: { selection: "legendSel"}}
+
+ ],
+ mark: {
+ "type": "point",
+ "tooltip": true
+ },
+ selection: {
+ grid: {
+ type: "interval",
+ resolve: "global",
+ bind: "scales",
+ translate: "[mousedown[!event.shiftKey], window:mouseup] > window:mousemove!",
+ zoom: "wheel![!event.shiftKey]"
+ },
+ pts: {
+ type: "single",
+ fields: ["label"]
+ }
+ },
+ encoding: {
+ x: {
+ field: "Frame size (bytes)",
+ type: "quantitative"
+ }
+ y: {
+ field: "Offered load (Gbps)",
+ type: "quantitative"
+ }
+ color: {
+ field: "label", "type": "nominal",
+ "legend": null
+ }
+ shape: {
+ field: "Flow count",
+ type: "nominal"
+ }
+ tooltip: {
+ "field": "Offered load (Gbps)",
+ "type": "quantitative"
+ }
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/kibana/visualizations/ndr_capacity_gbps_theoretical_line_chart.json b/kibana/visualizations/ndr_capacity_gbps_theoretical_line_chart.json
new file mode 100644
index 0000000..1ff4d23
--- /dev/null
+++ b/kibana/visualizations/ndr_capacity_gbps_theoretical_line_chart.json
@@ -0,0 +1,114 @@
+{
+ $schema: https: //vega.github.io/schema/vega-lite/v2.json
+ title: "Capacity in Gbps - 0,001% loss ratio"
+ data: {
+ url: {
+ %context%: true
+ %timefield%: "@timestamp"
+ index: resu*
+ body: {
+ _source: ["@timestamp", "_source", "offered_tx_rate_bps", "theoretical_tx_rate_bps", "flow_count", "frame_size", "user_label"]
+ },
+ size: 10000
+ },
+ format: { property: "hits.hits" }
+ },
+ transform: [
+ { calculate: "datum._source['offered_tx_rate_bps'] / 1000000000" as: "offered_load_gbps"},
+ { calculate: "datum._source['theoretical_tx_rate_bps'] / 1000000000" as: "theoretical_tx_rate_bps"},
+ { calculate: "datum._source['flow_count']" as: "flow_count"},
+ { calculate: "isNaN(toNumber(datum._source['frame_size'])) ? 362 : toNumber(datum._source['frame_size'])" as: "frame_size"},
+ { calculate: "datum._source['user_label'] + '-' + datum._source['flow_count']" as: "label"}
+ { aggregate: [{op: "max", field: "offered_load_gbps", as: "max_offered_load_gbps"}, {op: "max", field: "theoretical_tx_rate_bps", as: "theoretical_tx_rate_bps"}], groupby: ["frame_size", "label","flow_count"]}
+ ],
+ center: true,
+ hconcat: [
+ {
+ width:10,
+ selection: {
+ legendSel: {
+ type: "multi",
+ encodings: [ "color", "shape" ],
+ toggle: "event.shiftKey"
+ }
+ },
+ encoding: {
+ y: {
+ field: "label",
+ type: "nominal",
+ axis: {
+ title: "",
+ domain: false,
+ ticks: false,
+ offset: 10
+ },
+ },
+ color: {
+ condition: {
+ selection: "legendSel",
+ field: "label",
+ type: "nominal",
+ legend: null
+ },
+ value: "lightgrey"
+ }
+ },
+ mark: {
+ type: "square",
+ size: 120,
+ opacity: 1
+ }
+ },
+ {
+ layer: [
+ {
+ mark: {
+ type: "line",
+ tooltip: true,
+ point: true
+ },
+ encoding: {
+ x: { field: "frame_size", type: "quantitative", title: "Frame size (bytes)", axis: {offset: 10} }
+ y: { field: "theoretical_tx_rate_bps", type: "quantitative", title: "Theoretical rate (Gbps)" , axis: {offset: 10} }
+ strokeDash: {"field": "theoretical_tx_rate_bps", "type": "nominal"}
+ tooltip: [{"field": "theoretical_tx_rate_bps", "type": "quantitative", title: "theoretical max capacity"}],
+ color: { "value": "red"}
+ }
+ },
+ {
+ width:500,
+ height:280,
+ transform: [
+ {filter: { selection: "legendSel"}}
+ ],
+ mark: {
+ type: "line",
+ tooltip: true,
+ point: true
+ },
+ selection: {
+ grid: {
+ type: "interval",
+ resolve: "global",
+ bind: "scales",
+ translate: "[mousedown[!event.shiftKey], window:mouseup] > window:mousemove!",
+ zoom: "wheel![!event.shiftKey]"
+ },
+ pts: {
+ type: "single",
+ fields: ["Label"]
+ }
+ },
+ encoding: {
+ x: { field: "frame_size", type: "quantitative", title: "Frame size (bytes)", axis: {offset: 10} }
+ y: { field: "max_offered_load_gbps", type: "quantitative", title: "Offered load (Gbps)" , axis: {offset: 10} }
+ color: {field: "label", "type": "nominal",
+ "legend": null}
+ shape: {field: "flow_count", type: "nominal"}
+ tooltip: {"field": "max_offered_load_gbps", "type": "quantitative"}
+ }
+ }
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/kibana/visualizations/ndr_capacity_gbps_theoretical_scatter_plot.json b/kibana/visualizations/ndr_capacity_gbps_theoretical_scatter_plot.json
new file mode 100644
index 0000000..55a48ff
--- /dev/null
+++ b/kibana/visualizations/ndr_capacity_gbps_theoretical_scatter_plot.json
@@ -0,0 +1,128 @@
+{
+ $schema: "https://vega.github.io/schema/vega-lite/v2.json"
+ title: "Capacity in Gbps - 0,001% loss ratio"
+ data: {
+ url: {
+ %context%: true
+ %timefield%: "@timestamp"
+ index: resu*
+ body: {
+ _source: ["@timestamp", "_source", "offered_tx_rate_bps", "theoretical_tx_rate_bps", "flow_count", "frame_size", "user_label"]
+ },
+ size: 10000
+ },
+ format: { property: "hits.hits" }
+ },
+ transform: [
+ { calculate: "datum._source['offered_tx_rate_bps'] / 1000000000" as: "offered_tx_rate_bps"},
+ { calculate: "datum._source['theoretical_tx_rate_bps'] / 1000000000" as: "theoretical_tx_rate_bps"},
+ { calculate: "datum._source['flow_count']" as: "flow_count"},
+ { calculate: "isNaN(toNumber(datum._source['frame_size'])) ? 362 : toNumber(datum._source['frame_size'])" as: "frame_size"}
+ { calculate: "datum._source['user_label'] + '-' + datum._source['flow_count']" as: "label"}
+ ],
+ center: true,
+ hconcat: [
+ {
+ width:10,
+ selection: {
+ legendSel: {
+ type: "multi",
+ encodings: [ "color", "shape" ],
+ toggle: "event.shiftKey"
+ }
+ },
+ encoding: {
+ y: {
+ field: "label",
+ type: "nominal",
+ axis: {
+ title: "",
+ domain: false,
+ ticks: false,
+ offset: 10
+ },
+ },
+ color: {
+ condition: {
+ selection: "legendSel",
+ field: "label",
+ type: "nominal",
+ legend: null
+ },
+ value: "lightgrey"
+ }
+ },
+ mark: {
+ type: "square",
+ size: 120,
+ opacity: 1
+ }
+ },
+ {
+ layer: [
+ {
+ mark: {
+ type: "line",
+ tooltip: true
+ },
+ encoding: {
+ x: { field: "frame_size", type: "quantitative", title: "Frame size (bytes)", axis: {offset: 10} }
+ y: { field: "theoretical_tx_rate_bps", type: "quantitative", title: "Offered load (Gbps)" , axis: {offset: 10} }
+ strokeDash: {"field": "theoretical_tx_rate_bps", "type": "nominal"}
+ tooltip: [{"field": "theoretical_tx_rate_bps", "type": "quantitative", title: "theoretical max capacity"}],
+ color: { "value": "red"}
+ }
+ },
+ {
+ width:500,
+ height:280,
+ transform: [
+ {filter: { selection: "legendSel"}}
+ ],
+ mark: {
+ "type": "point",
+ "tooltip": true
+ },
+ selection: {
+ grid: {
+ type: "interval",
+ resolve: "global",
+ bind: "scales",
+ translate: "[mousedown[!event.shiftKey], window:mouseup] > window:mousemove!",
+ zoom: "wheel![!event.shiftKey]"
+ },
+ pts: {
+ type: "single",
+ fields: ["label"]
+ }
+ },
+ encoding: {
+ x: {
+ field: "frame_size",
+ title: "Frame size (bytes)",
+ type: "quantitative"
+ }
+ y: {
+ field: "offered_tx_rate_bps",
+ title: "Offered load (Gbps)",
+ type: "quantitative"
+ }
+ color: {
+ field: "label", "type": "nominal",
+ "legend": null
+ }
+ shape: {
+ field: "flow_count",
+ type: "nominal"
+ }
+ tooltip: {
+ "field": "offered_tx_rate_bps",
+ "title": "Offered load (Gbps)",
+ "type": "quantitative"
+ }
+ }
+ }
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/kibana/visualizations/ndr_capacity_pps_line_chart.json b/kibana/visualizations/ndr_capacity_pps_line_chart.json
new file mode 100644
index 0000000..ad79caa
--- /dev/null
+++ b/kibana/visualizations/ndr_capacity_pps_line_chart.json
@@ -0,0 +1,98 @@
+{
+ $schema: https: //vega.github.io/schema/vega-lite/v2.json
+ title: "Capacity in Mpps - 0,001% loss ratio"
+ data: {
+ url: {
+ %context%: true
+ %timefield%: "@timestamp"
+ index: resu*
+ body: {
+ _source: ["@timestamp", "_source", "rate_pps", "flow_count", "frame_size", "user_label", "type"]
+ },
+ size: 10000
+ },
+ format: { property: "hits.hits" }
+ },
+
+ transform: [
+ { calculate: "datum._source['rate_pps'] / 1000000" as: "offered_load_pps"},
+ { calculate: "datum._source['flow_count']" as: "flow_count"},
+ { calculate: "isNaN(toNumber(datum._source['frame_size'])) ? 362 : toNumber(datum._source['frame_size'])" as: "frame_size"},
+ { calculate: "datum._source['user_label'] + '-' + datum._source['flow_count']" as: "label"}
+ { aggregate: [{op: "max", field: "offered_load_pps", as: "max_offered_load_pps"}], groupby: ["frame_size", "label","flow_count"]}
+
+ ],
+ center: true,
+ hconcat: [
+ {
+ width:10,
+ selection: {
+ legendSel: {
+ type: "multi",
+ encodings: [ "color", "shape" ],
+ toggle: "event.shiftKey"
+ }
+ },
+ encoding: {
+ y: {
+ field: "label",
+ type: "nominal",
+ axis: {
+ title: "",
+ domain: false,
+ ticks: false,
+ offset: 10
+ },
+ },
+ color: {
+ condition: {
+ selection: "legendSel",
+ field: "label",
+ type: "nominal",
+ legend: null
+ },
+ value: "lightgrey"
+ }
+ },
+ mark: {
+ type: "square",
+ size: 120,
+ opacity: 1
+ }
+ },
+ {
+ width:500,
+ height:280,
+ transform: [
+ {filter: { selection: "legendSel"}}
+
+ ],
+ mark: {
+ type: "line",
+ tooltip: true,
+ point: true
+ },
+ selection: {
+ grid: {
+ type: "interval",
+ resolve: "global",
+ bind: "scales",
+ translate: "[mousedown[!event.shiftKey], window:mouseup] > window:mousemove!",
+ zoom: "wheel![!event.shiftKey]"
+ },
+ pts: {
+ type: "single",
+ fields: ["Label"]
+ }
+ },
+ encoding: {
+ x: { field: "frame_size", type: "quantitative", title: "Frame size (bytes)", axis: {offset: 10} }
+ y: { field: "max_offered_load_pps", type: "quantitative", title: "Offered load (Mpps)" , axis: {offset: 10} }
+ color: {field: "label", "type": "nominal",
+ "legend": null}
+ tooltip: {"field": "max_offered_load_pps", "type": "quantitative"},
+ shape: {field: "flow_count", type: "nominal"}
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/kibana/visualizations/ndr_capacity_pps_scatter_plot.json b/kibana/visualizations/ndr_capacity_pps_scatter_plot.json
new file mode 100644
index 0000000..0bb8f2f
--- /dev/null
+++ b/kibana/visualizations/ndr_capacity_pps_scatter_plot.json
@@ -0,0 +1,108 @@
+{
+ $schema: "https://vega.github.io/schema/vega-lite/v2.json"
+ title: "Capacity in Mpps - 0,001% loss ratio"
+ data: {
+ url: {
+ %context%: true
+ %timefield%: "@timestamp"
+ index: resu*
+ body: {
+ _source: ["@timestamp", "_source", "rate_pps", "flow_count", "frame_size", "user_label"]
+ },
+ size: 10000
+ },
+ format: { property: "hits.hits" }
+ },
+ transform: [
+ { calculate: "datum._source['rate_pps'] / 1000000" as: "Offered load (Mpps)"},
+ { calculate: "datum._source['flow_count']" as: "Flow count"},
+ { calculate: "isNaN(toNumber(datum._source['frame_size'])) ? 362 : toNumber(datum._source['frame_size'])" as: "Frame size (bytes)"}
+ { calculate: "datum._source['user_label'] + '-' + datum._source['flow_count']" as: "label"}
+ ],
+ center: true,
+ hconcat: [
+ {
+ width:10,
+ selection: {
+ legendSel: {
+ type: "multi",
+ encodings: [ "color", "shape" ],
+ toggle: "event.shiftKey"
+ }
+ },
+ encoding: {
+ y: {
+ field: "label",
+ type: "nominal",
+ axis: {
+ title: "",
+ domain: false,
+ ticks: false,
+ offset: 10
+ },
+ },
+ color: {
+ condition: {
+ selection: "legendSel",
+ field: "label",
+ type: "nominal",
+ legend: null
+ },
+ value: "lightgrey"
+ }
+ },
+ mark: {
+ type: "square",
+ size: 120,
+ opacity: 1
+ }
+ },
+ {
+ width:500,
+ height:280,
+ transform: [
+ {filter: { selection: "legendSel"}}
+
+ ],
+ mark: {
+ "type": "point",
+ "tooltip": true
+ },
+ selection: {
+ grid: {
+ type: "interval",
+ resolve: "global",
+ bind: "scales",
+ translate: "[mousedown[!event.shiftKey], window:mouseup] > window:mousemove!",
+ zoom: "wheel![!event.shiftKey]"
+ },
+ pts: {
+ type: "single",
+ fields: ["label"]
+ }
+ },
+ encoding: {
+ x: {
+ field: "Frame size (bytes)",
+ type: "quantitative"
+ }
+ y: {
+ field: "Offered load (Mpps)",
+ type: "quantitative"
+ }
+ color: {
+ field: "label", "type": "nominal",
+ "legend": null
+ }
+ shape: {
+ field: "Flow count",
+ type: "nominal"
+ }
+ tooltip: {
+ "field": "Offered load (Mpps)",
+ "type": "quantitative"
+ }
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/kibana/visualizations/ndr_capacity_pps_theoretical_line_chart.json b/kibana/visualizations/ndr_capacity_pps_theoretical_line_chart.json
new file mode 100644
index 0000000..00b9765
--- /dev/null
+++ b/kibana/visualizations/ndr_capacity_pps_theoretical_line_chart.json
@@ -0,0 +1,115 @@
+{
+ $schema: https: //vega.github.io/schema/vega-lite/v2.json
+ title: "Capacity in Mpps - 0,001% loss ratio"
+ data: {
+ url: {
+ %context%: true
+ %timefield%: "@timestamp"
+ index: resu*
+ body: {
+ _source: ["@timestamp", "_source", "theoretical_tx_rate_pps", "rate_pps", "flow_count", "frame_size", "user_label", "type"]
+ },
+ size: 10000
+ },
+ format: { property: "hits.hits" }
+ },
+
+ transform: [
+ { calculate: "datum._source['rate_pps'] / 1000000" as: "offered_load_pps"},
+ { calculate: "datum._source['theoretical_tx_rate_pps'] / 1000000" as: "theoretical_tx_rate_pps"},
+ { calculate: "datum._source['flow_count']" as: "flow_count"},
+ { calculate: "isNaN(toNumber(datum._source['frame_size'])) ? 362 : toNumber(datum._source['frame_size'])" as: "frame_size"},
+ { calculate: "datum._source['user_label'] + '-' + datum._source['flow_count']" as: "label"}
+ { aggregate: [{op: "max", field: "offered_load_pps", as: "max_offered_load_pps"}, {op: "max", field: "theoretical_tx_rate_pps", as: "theoretical_tx_rate_pps"}], groupby: ["frame_size", "label","flow_count"]}
+
+ ],
+ center: true,
+ hconcat: [
+ {
+ width:10,
+ selection: {
+ legendSel: {
+ type: "multi",
+ encodings: [ "color", "shape" ],
+ toggle: "event.shiftKey"
+ }
+ },
+ encoding: {
+ y: {
+ field: "label",
+ type: "nominal",
+ axis: {
+ title: "",
+ domain: false,
+ ticks: false,
+ offset: 10
+ },
+ },
+ color: {
+ condition: {
+ selection: "legendSel",
+ field: "label",
+ type: "nominal",
+ legend: null
+ },
+ value: "lightgrey"
+ }
+ },
+ mark: {
+ type: "square",
+ size: 120,
+ opacity: 1
+ }
+ },
+ {
+ layer: [{
+ mark: {
+ type: "line",
+ tooltip: true,
+ point: true
+ },
+ encoding: {
+ x: { field: "frame_size", type: "quantitative", title: "Frame size (bytes)", axis: {offset: 10} }
+ y: { field: "theoretical_tx_rate_pps", type: "quantitative", title: "Offered load (Mpps)" , axis: {offset: 10} }
+ strokeDash: {"field": "theoretical_tx_rate_pps", "type": "nominal"}
+ tooltip: [{"field": "theoretical_tx_rate_pps", "type": "quantitative", title: "theoretical max capacity"}],
+ color: { "value": "red"}
+ }
+ },{
+ width:500,
+ height:280,
+ transform: [
+ {filter: { selection: "legendSel"}}
+
+ ],mark: {
+ type: "line",
+ tooltip: true,
+ point: true
+ },
+ selection: {
+ grid: {
+ type: "interval",
+ resolve: "global",
+ bind: "scales",
+ translate: "[mousedown[!event.shiftKey], window:mouseup] > window:mousemove!",
+ zoom: "wheel![!event.shiftKey]"
+ },
+ pts: {
+ type: "single",
+ fields: ["Label"]
+ }
+ },
+ encoding: {
+ x: { field: "frame_size", type: "quantitative", title: "Frame size (bytes)", axis: {offset: 10} }
+ y: { field: "max_offered_load_pps", type: "quantitative", title: "Offered load (Mpps)" , axis: {offset: 10} }
+ color: {field: "label", "type": "nominal",
+ "legend": null}
+ tooltip: {"field": "max_offered_load_pps", "type": "quantitative"},
+ shape: {field: "flow_count", type: "nominal"}
+ }
+ }
+ ]
+ }
+
+ ]
+} \ No newline at end of file
diff --git a/kibana/visualizations/ndr_capacity_pps_theoretical_scatter_plot.json b/kibana/visualizations/ndr_capacity_pps_theoretical_scatter_plot.json
new file mode 100644
index 0000000..984a7f4
--- /dev/null
+++ b/kibana/visualizations/ndr_capacity_pps_theoretical_scatter_plot.json
@@ -0,0 +1,128 @@
+{
+ $schema: "https://vega.github.io/schema/vega-lite/v2.json"
+ title: "Capacity in Mpps - 0,001% loss ratio"
+ data: {
+ url: {
+ %context%: true
+ %timefield%: "@timestamp"
+ index: resu*
+ body: {
+ _source: ["@timestamp", "_source", "rate_pps", "theoretical_tx_rate_pps", "flow_count", "frame_size", "user_label"]
+ },
+ size: 10000
+ },
+ format: { property: "hits.hits" }
+ },
+ transform: [
+ { calculate: "datum._source['rate_pps'] / 1000000" as: "rate_pps"},
+ { calculate: "datum._source['theoretical_tx_rate_pps'] / 1000000" as: "theoretical_tx_rate_pps"},
+ { calculate: "datum._source['flow_count']" as: "flow_count"},
+ { calculate: "isNaN(toNumber(datum._source['frame_size'])) ? 362 : toNumber(datum._source['frame_size'])" as: "frame_size"}
+ { calculate: "datum._source['user_label'] + '-' + datum._source['flow_count']" as: "label"}
+ ],
+ center: true,
+ hconcat: [
+ {
+ width:10,
+ selection: {
+ legendSel: {
+ type: "multi",
+ encodings: [ "color", "shape" ],
+ toggle: "event.shiftKey"
+ }
+ },
+ encoding: {
+ y: {
+ field: "label",
+ type: "nominal",
+ axis: {
+ title: "",
+ domain: false,
+ ticks: false,
+ offset: 10
+ },
+ },
+ color: {
+ condition: {
+ selection: "legendSel",
+ field: "label",
+ type: "nominal",
+ legend: null
+ },
+ value: "lightgrey"
+ }
+ },
+ mark: {
+ type: "square",
+ size: 120,
+ opacity: 1
+ }
+ },
+ {
+ layer: [
+ {
+ mark: {
+ type: "line",
+ tooltip: true
+ },
+ encoding: {
+ x: { field: "frame_size", type: "quantitative", title: "Frame size (bytes)", axis: {offset: 10} }
+ y: { field: "theoretical_tx_rate_pps", type: "quantitative", title: "Offered load (Mpps)" , axis: {offset: 10} }
+ strokeDash: {"field": "theoretical_tx_rate_pps", "type": "nominal"}
+ tooltip: [{"field": "theoretical_tx_rate_pps", "type": "quantitative", title: "theoretical max capacity"}],
+ color: { "value": "red"}
+ }
+ },
+ {
+ width:500,
+ height:280,
+ transform: [
+ {filter: { selection: "legendSel"}}
+ ],
+ mark: {
+ "type": "point",
+ "tooltip": true
+ },
+ selection: {
+ grid: {
+ type: "interval",
+ resolve: "global",
+ bind: "scales",
+ translate: "[mousedown[!event.shiftKey], window:mouseup] > window:mousemove!",
+ zoom: "wheel![!event.shiftKey]"
+ },
+ pts: {
+ type: "single",
+ fields: ["label"]
+ }
+ },
+ encoding: {
+ x: {
+ field: "frame_size",
+ title: "Frame size (bytes)",
+ type: "quantitative"
+ }
+ y: {
+ field: "rate_pps",
+ title: "Offered load (Mpps)",
+ type: "quantitative"
+ }
+ color: {
+ field: "label", "type": "nominal",
+ "legend": null
+ }
+ shape: {
+ field: "flow_count",
+ type: "nominal"
+ }
+ tooltip: {
+ "field": "rate_pps",
+ "title": "Offered load (Mpps)",
+ "type": "quantitative"
+ }
+ }
+ }
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/nfvbench/cfg.default.yaml b/nfvbench/cfg.default.yaml
index 01097a0..c76e738 100755..100644
--- a/nfvbench/cfg.default.yaml
+++ b/nfvbench/cfg.default.yaml
@@ -30,8 +30,25 @@
# - availability_zone
# - hypervisor_hostname
# - vlans
+# WARNING: Not used if clouds_detail is sets
openrc_file:
+# The OpenStack clouds configuration from clouds.yaml file to use.
+# clouds.yaml file must be in one of the following paths:
+# - ~/.config/openstack
+# - /etc/openstack
+# Note: If running in a container, this path must be valid in the container.
+# The only case where this field can be empty is when measuring a system that does not run
+# OpenStack or when OpenStack APIs are not accessible or OpenStack APis use is not
+# desirable. In that case the EXT service chain must be used.
+#
+# If user is not admin some parameters are mandatory and must be filled with valid values in config file such as :
+# - availability_zone
+# - hypervisor_hostname
+# - vlans
+# If a value is sets, this parameter disable the use of openrc file
+clouds_detail:
+
# Forwarder to use in nfvbenchvm image. Available options: ['vpp', 'testpmd']
vm_forwarder: testpmd
@@ -60,7 +77,7 @@ flavor:
# Size of local disk in GB
disk: 0
# metadata are supported and can be added if needed, optional
- # note that if your openstack does not have NUMA optimization
+ # note that if your OpenStack does not have NUMA optimization
# (cpu pinning and huge pages)
# you must comment out extra_specs completely otherwise
# loopback VM creation will fail
@@ -79,10 +96,15 @@ flavor:
# When multiqueue is used the recommended setting is to set it to same value as the
# number of vCPU used - up to a max of 8 queues.
# Setting to a lower value than vCPU should also work. For example if using 4 vCPU and
-# vif_multiqueue_size is set to 2, openstack will create 4 queues per interface but the
+# vif_multiqueue_size is set to 2, OpenStack will create 4 queues per interface but the
# test VM will only use the first 2 queues.
vif_multiqueue_size: 1
+# Increase number of buffers allocated for VPP VM forwarder. May be needed in scenarios with large
+# number of interfaces and worker threads, or a lot of physical interfaces with multiple RSS queues.
+# Value is per CPU socket. Default is 16384.
+num_mbufs: 16384
+
# Name of the availability zone to use for the test VMs
# Must be one of the zones listed by 'nova availability-zone-list'
# availability_zone: 'nova'
@@ -90,7 +112,7 @@ vif_multiqueue_size: 1
availability_zone:
# To force placement on a given hypervisor, set the name here
# (if multiple names are provided, the first will be used)
-# Leave empty to let openstack pick the hypervisor
+# Leave empty to let OpenStack pick the hypervisor
compute_nodes:
# If openrc is not admin set a valid value for hypervisor hostname
# Example of value: hypervisor_hostname: "server1"
@@ -123,10 +145,16 @@ flow_count: 10000
sriov: false
# Perform port to port loopback (direct or through switch)
-# Should be used with EXT service chain and no ARP (no_arp: true)
-# When enabled, the vlans property must contain the same VLAN id for all chains.
-# Can be overriden by --l2-loopback
+# e.g. for unitary testing of the switch or the bench itself.
+# When selected, this mode forces EXT service chain and no ARP mode
+# Destination MAC for each port is set to the other (peer) port MAC.
+# VLAN tagging is defined by 'vlans' & 'vlan_tagging' properties.
+# Can be overriden by --l2-loopback (including vlan tagging spec).
l2_loopback: false
+# No assumption is made about the loop implementation.
+# Multiple L2 vlan tagged service chains are allowed,
+# the vlan ID lists' size must be at least service_chain_count.
+# If not vlan tagging, the service chain count is forced to 1.
# Resources created by NFVbench will not be removed
# Can be overriden by --no-cleanup
@@ -158,11 +186,17 @@ traffic_generator:
# `ip_addrs_step`: step for generating IP sequence. Use "random" for random patterns, default is 0.0.0.1.
ip_addrs: ['10.0.0.0/8', '20.0.0.0/8']
ip_addrs_step: 0.0.0.1
+
+ #'ip_src_static': an attribute to precise the state of source IP during the generation of traffic, It indicates whether
+ # the IP source variate or remain constant. Use True for constant IP and False for varying IPs.
+ # default value is True
+ ip_src_static: True
+
# `tg_gateway_ip_addrs` base IP for traffic generator ports in the left and right networks to the VNFs
# chain count consecutive IP addresses spaced by tg_gateway_ip_addrs_step will be used
# `tg_gateway_ip_addrs__step`: step for generating traffic generator gateway sequences. default is 0.0.0.1
- tg_gateway_ip_addrs: ['1.1.0.100', '2.2.0.100']
- tg_gateway_ip_cidrs: ['1.1.0.0/24','2.2.0.0/24']
+ tg_gateway_ip_addrs: ['192.168.1.100', '192.168.2.100']
+ tg_gateway_ip_cidrs: ['192.168.1.0/24','192.168.2.0/24']
tg_gateway_ip_addrs_step: 0.0.0.1
# `gateway_ip_addrs`: base IPs of VNF router gateways (left and right), quantity used depends on chain count
# must correspond to the public IP on the left and right networks
@@ -170,23 +204,43 @@ traffic_generator:
# must be the same subnet but not same IP as tg_gateway_ip_addrs.
# chain count consecutive IP addresses spaced by gateway_ip_addrs_step will be used
# `gateway_ip_addrs_step`: step for generating router gateway sequences. default is 0.0.0.1
- gateway_ip_addrs: ['1.1.0.2', '2.2.0.2']
+ gateway_ip_addrs: ['192.168.1.1', '192.168.2.1']
gateway_ip_addrs_step: 0.0.0.1
+
+ # UDP DEFINED VARIABLES
+ # TRex pick default UDP port (53) but the range of UDP source and destination ports are also
+ # defined from configuration file by using the following attributes:
+ #
# `udp_src_port`: the source port for sending UDP traffic, default is picked by TRex (53)
# `udp_dst_port`: the destination port for sending UDP traffic, default is picked by TRex (53)
+ # `udp_src_port` and `udp_dst_port` can be defined by a single port or a range. Example:
+ # udp_src_port: 80
+ # udp_dst_port: ['1024','65000']
+ # `udp_port_step`: the step between two generated ports, default is equal to '1'
+ #
+ # NOTICE:
+ # Following TRex functionalities, incrementation and decrementation of source port and destination
+ # port values occur simultaneously.
+ # So, in order to reach the highest possible number of packets, it's recommended that the range of source ports
+ # minus the range of destination ports should be different of 1
+ # i.e: |range[source_port] - range[destination_port]| = 1
udp_src_port:
udp_dst_port:
+ udp_port_step: '1'
# VxLAN only: optionally specify what VLAN tag to use for the VxLAN overlay
# This is used if the vxlan tunnels are running on a specific VLAN.
# Leave empty if there is no VLAN tagging required, or specify the VLAN id to use
# for all VxLAN tunneled traffic
vtep_vlan:
- # VxLAN only: local/source vteps IP addresses for port 0 and 1 ['10.1.1.230', '10.1.1.231']
+ # VxLAN and MPLS only: local/source vteps IP addresses for port 0 and 1 ['10.1.1.230', '10.1.1.231']
src_vteps:
# VxLAN only: remote IP address of the remote VTEPs that terminate all tunnels originating from local VTEPs
dst_vtep:
-
+ # The encapsulated L3/MPLS packet needs to traverse L3 or MPLS fabric to reach to its final dst_vtep.
+ # This parameter is required to resolve first next-hop MAC address if it next-hop is not its final dst_vtep.
+ # This parameter is mandatory for MPLS only
+ vtep_gateway_ips:
# L2 ADDRESSING OF UDP PACKETS
# Lists of dest MAC addresses to use on each traffic generator port (one dest MAC per chain)
# Leave empty for PVP, PVVP, EXT with ARP
@@ -300,6 +354,52 @@ restart: false
# if empty defaults to the one specified in generator_profile.cores
cores:
+# Simpler override for the interface speed
+# if empty, the current generator_profile.intf_speed parameter applies
+# if value = 'auto' the auto-detection is forced
+intf_speed:
+
+# 'cores' and 'intf_speed' parameters can be overriden themselves
+# by respective options --cores and --intf-speed on the command-line.
+
+# By default, the real ports line rate is detected and used as
+# the reference for computing the theoretical maximum traffic load (100%).
+# Note that specifying 'intf_speed' allows to artificially lower this
+# reference while not modifying the actual transmission bit rate.
+
+# The values of the following parameters are ignored on entry
+# they are defined here in order to appear in the reported configuration.
+# They will reflect the value active at run-time (after overriding or detection)
+cores_used:
+intf_speed_used:
+intf_speed_detected:
+
+# A cache size value is passed to the TRex field engine (FE) at packet generation.
+# Can be overridden by --cache-size
+# More information for TRex performance:
+# https://trex-tgn.cisco.com/trex/doc/trex_stateless.html#_tutorial_field_engine_significantly_improve_performance
+# If cache_size = 0 (or empty): no cache will be used by TRex (default)
+# If cache_size < 0: cache_size will be set to flow count value
+cache_size: 0
+# The cache size is actually limited by the number of 64B mbufs configured in the trex platform configuration (see Trex manual 6.2.2. Memory section configuration)
+# Note that the resulting value is finally capped to 10000, whatever the requested size is (by design limitation).
+
+# Specification of the TRex behaviour dealing with the i40e network card driver issue: Trex-528
+# see https://trex-tgn.cisco.com/youtrack/issue/trex-528
+# This issue states that if other ports, in the same card,
+# are in kernel mode, they could impair traffic counting.
+# Can be overridden by --i40e-mixed
+# Values can be:
+# ignore - don't consider the case (default)
+# exit - should the case arise, exit (TRex default behaviour)
+# unbind - unbind kernel bound ports (the former NFVbench behaviour)
+# The 'ignore' option might be OK as soon as the issue has been fixed in the driver.
+# The 'unbind' option should not be used! who knows the current use of other ports?
+i40e_mixed:
+
+# Trex will use 1 x 64B mbuf per pre-built cached packet, assuming 1 pre-built cached packet per flow, it means for very large number of flows, the number of configured mbuf_64 will need to be set accordingly.
+mbuf_64:
+
# mbuffer ratio to use for TRex (see TRex documentation for more details)
mbuf_factor: 0.2
@@ -307,6 +407,10 @@ mbuf_factor: 0.2
# hdrh is enabled by default and requires TRex v2.58 or higher
disable_hdrh: false
+# List of latency percentiles values returned using hdrh
+# elements should be int or float between 0.0 and 100.0
+lat_percentiles: [25, 75, 99]
+
# -----------------------------------------------------------------------------
# These variables are not likely to be changed
@@ -322,7 +426,7 @@ generic_poll_sec: 2
# name of the loop VM
loop_vm_name: 'nfvbench-loop-vm'
-# Default names, subnets and CIDRs for PVP/PVVP networks (openstack only)
+# Default names, subnets and CIDRs for PVP/PVVP networks (OpenStack only)
#
# If a network with given name already exists it will be reused.
# - PVP only uses left and right
@@ -354,7 +458,7 @@ loop_vm_name: 'nfvbench-loop-vm'
# segmentation_id: 2001
# physical_network: phys_sriov1
#
-# For multi-chaining and non shared network mode (VLAN, SRIOV, VxLAN):
+# For multi-chaining and non shared network mode (VLAN, SRIOV, VxLAN, MPLS):
# - the segmentation_id field if provided must be a list of values (as many as chains)
# - segmentation_id auto-indexing:
# the segmentation_id field can also be a single value that represents the base value from which
@@ -364,23 +468,42 @@ loop_vm_name: 'nfvbench-loop-vm'
# - the physical_network can be a single name (all VFs to be allocated on same physnet)
# of a list of physnet names to use different PFs
#
-# Example of 2-chain configuration:
-# internal_networks:
-# left:
-# segmentation_id: [2000, 2001]
-# physical_network: phys_sriov0
-# right:
-# segmentation_id: [2010, 2011]
-# physical_network: phys_sriov1
+# Example of 2-chain VLAN configuration:
+# internal_networks:
+# left:
+# segmentation_id: [2000, 2001]
+# physical_network: phys_sriov0
+# right:
+# segmentation_id: [2010, 2011]
+# physical_network: phys_sriov1
+# Equivalent to (using auto-indexing):
+# internal_networks:
+# left:
+# segmentation_id: 2000
+# physical_network: phys_sriov0
+# right:
+# segmentation_id: 2010
+# physical_network: phys_sriov1
#
-# Equivalent to (using auto-indexing):
-# internal_networks:
-# left:
-# segmentation_id: 2000
-# physical_network: phys_sriov0
-# right:
-# segmentation_id: 2010
-# physical_network: phys_sriov1
+# - mpls_transport_labels is used only when MPLS encapsulation is enabled (mpls: true)
+# this parameter doesn't support auto-indexing because this is not a typical scenario
+# expected the list of values in a range 256-1048575, one value per chain is expected
+#
+# In the bellow configuration example 'segmentation_id; contains the inner MPLS label for each chain
+# and 'mpls_transport_labels' contains the outer transport MPLS label for each chain
+# Example of 2-chain MPLS configuration:
+# internal_networks:
+# left:
+# network_type: mpls
+# segmentation_id: [2000, 2001]
+# mpls_transport_labels: [10000, 10000]
+# physical_network: phys_sriov0
+# right:
+# network_type: mpls
+# segmentation_id: [2010, 2011]
+# mpls_transport_labels: [11000, 11000]
+# physical_network: phys_sriov1
+
internal_networks:
left:
@@ -390,6 +513,7 @@ internal_networks:
network_type: 'vlan'
segmentation_id:
physical_network:
+ mpls_transport_labels:
right:
name: 'nfvbench-rnet'
subnet: 'nfvbench-rsubnet'
@@ -397,6 +521,7 @@ internal_networks:
network_type: 'vlan'
segmentation_id:
physical_network:
+ mpls_transport_labels:
middle:
name: 'nfvbench-mnet'
subnet: 'nfvbench-msubnet'
@@ -404,6 +529,7 @@ internal_networks:
network_type: 'vlan'
segmentation_id:
physical_network:
+ mpls_transport_labels:
# IDLE INTERFACES: PVP, PVVP and non shared net only.
# By default each test VM will have 2 virtual interfaces for looping traffic.
@@ -421,7 +547,7 @@ idle_networks:
# Prefix for all idle networks, the final name will append the chain ID and idle index
# e.g. "nfvbench-idle-net.0.4" chain 0 idle index 4
name: 'nfvbench-idle-net'
- # Subnet name to use for all idle subnetworks
+ # Subnet name to use for all idle subnetworks
subnet: 'nfvbench-idle-subnet'
# CIDR to use for all idle networks (value should not matter)
cidr: '192.169.1.0/24'
@@ -438,6 +564,63 @@ idle_networks:
# physnet name to use for all idle interfaces
physical_network:
+# MANAGEMENT INTERFACE
+# By default each test VM will have 2 virtual interfaces for looping traffic.
+# If use_management_port is true, additional virtual interface can be
+# added at VM creation time, this interface will be used for VM management over SSH.
+# This will be helpful for debug (forwarder config, capture traffic...)
+# or to emulate VNF with management interface
+use_management_port: false
+
+# If a network with given name already exists it will be reused.
+# Otherwise a new network is created for management interface.
+# If use_management_port is false, the options below will be ignored
+# and no management interface will be added.
+management_network:
+ name: 'nfvbench-management-net'
+ # Subnet name to use for management subnetwork
+ subnet: 'nfvbench-management-subnet'
+ # CIDR to use for management network
+ cidr: '192.168.0.0/24'
+ gateway: '192.168.0.254'
+ # Type of network associated to the management virtual interface (vlan or vxlan)
+ network_type: 'vlan'
+ # segmentation ID to use for the network attached to the management virtual interface
+ # vlan: leave empty to let neutron pick the segmentation ID
+ # vxlan: must specify the starting VNI value to be used (cannot be empty)
+ segmentation_id:
+ # physnet name to use for all idle interfaces
+ physical_network:
+
+# Floating IP for management interface
+# If use_floating_ip is true, floating IP will be set on management interface port
+# One floating IP by loop VM will be used (floating ips are often limited,
+# use them on limited context mainly for debug). If there are 10 PVP chains, this will require 10
+# floating IPs. If 10 PVVP chains, it will require 20 floating IPs
+use_floating_ip: false
+
+# If a network with given name already exists it will be reused.
+# Set same name as management_network if you want to use a floating IP from this network
+# Otherwise set name, subnet and CIDR information from your floating IP pool network
+# Floating network used to set floating IP on management port.
+# Only 1 floating network will be used for all VMs and chains (shared network).
+# If use_floating_ip is false, the options below will be ignored
+# and no floating IP will be added.
+floating_network:
+ name: 'nfvbench-floating-net'
+ # Subnet name to use for floating subnetwork
+ subnet: 'nfvbench-floating-subnet'
+ # CIDR to use for floating network
+ cidr: '192.168.0.0/24'
+ # Type of network associated to the management virtual interface (vlan or vxlan)
+ network_type: 'vlan'
+ # segmentation ID to use for the network attached to the management virtual interface
+ # vlan: leave empty to let neutron pick the segmentation ID
+ # vxlan: must specify the starting VNI value to be used (cannot be empty)
+ segmentation_id:
+ # physnet name to use for all idle interfaces
+ physical_network:
+
# In the scenario of PVVP + SRIOV, there is choice of how the traffic will be
# handled in the middle network. The default (false) will use vswitch, while
# SRIOV can be used by toggling below setting.
@@ -465,7 +648,7 @@ use_sriov_middle_net: false
# external_networks:
# left: ['ext-lnet', 'ext-lnet2']
# right: ['ext-rnet', 'ext-rnet2']
-#
+#
external_networks:
left:
right:
@@ -506,30 +689,41 @@ edge_networks:
# Use 'true' to enable VXLAN encapsulation support and sent by the traffic generator
# When this option enabled internal networks 'network type' parameter value should be 'vxlan'
+# VxLAN and MPLS encapsulations are mutual exclusive if 'vxlan' is true then 'mpls' should be false
+# and vise versa
vxlan: false
-
+# Use 'true' to enable MPLS encapsulation support and sent by the traffic generator
+# When this option enabled internal networks 'network type' parameter value should be 'mpls'
+# MPLS and VxLAN encapsulations are mutual exclusive if 'mpls' is 'true' then 'vxlan' should be set to 'false'
+# and vise versa. no_flow_stats, no_latency_stats, no_latency_streams should be set to 'true' because these
+# features are not supported at the moment. In future when these features will be supported they will require
+# special NIC hardware. Only 2 label stack supported at the moment where one label is transport and another
+# is VPN for more details please refer to 'mpls_transport_labels' and 'segmentation_id' in networks configuration
+mpls: false
# Use 'true' to enable VLAN tagging of packets generated and sent by the traffic generator
# Leave empty or set to false if you do not want the traffic generator to insert the VLAN tag (this is
# needed for example if VLAN tagging is enabled on switch (access mode) or if you want to hook
# directly to a NIC).
# By default is set to true (which is the nominal use case with TOR and trunk mode to Trex ports)
-# If VxLAN is enabled, this option should be set to false (vlan tagging for encapsulated packets
+# If VxLAN or MPLS are enabled, this option should be set to false (vlan tagging for encapsulated packets
# is not supported). Use the vtep_vlan option to enable vlan tagging for the VxLAN overlay network.
vlan_tagging: true
-# Used only in the case of EXT chain and no openstack or not admin access to specify the VLAN IDs to use.
-# This property is ignored when OpenStakc is used or in the case of l2-loopback.
+# Used only in the case of EXT chain and no OpenStack or not admin access to specify the VLAN IDs to use.
+# This property is ignored when OpenStack is used or when 'vlan_tagging' is disabled.
# If OpenStack is used leave the list empty, VLAN IDs are retrieved from OpenStack networks using Neutron API.
# If networks are shared across all chains (service_chain_shared_net=true), the list should have exactly 2 values
# If networks are not shared across chains (service_chain_shared_net=false), the list should have
# 2 list of vlan IDs
-# In the special case of l2-loopback the list should have the same VLAN id for all chains
# Examples:
# [1998, 1999] left network uses vlan 1998 right network uses vlan 1999
# [[1,2],[3,4]] chain 0 left vlan 1, right vlan 2 - chain 1 left vlan 3 right vlan 4
-# [1010, 1010] same VLAN id with l2-loopback enabled
-#
+# [1010, 1010] same vlan ID on both sides, for a typical l2-loopback test (*)
+# The vlan lists may be oversized, compared to the actual service chain count
+# (lowest indexes are used) but an exception is raised if they are too short.
vlans: []
+# (*) actually there is no restriction, left/right IDs may differ
+# for some exotic purpose - see also the l2_loopback parameter.
# ARP is used to discover the MAC address of VNFs that run L3 routing.
# Used only with EXT chain.
@@ -538,6 +732,11 @@ vlans: []
# (see mac_addrs_left and mac_addrs_right)
no_arp: false
+# Loop VM (VPP forwarder) can use ARP to discover next hop mac address
+# False (default): do not send ARP but use static config devices macs instead (TRex gratuitous ARP are not interpreted by VPP)
+# True: ARP requests are sent to find out next hop MAC addresses (for instance SDN-GW)
+loop_vm_arp: false
+
# Traffic Profiles
# You can add here more profiles as needed
# `l2frame_size` can be specified in any none zero integer value to represent the size in bytes
@@ -564,11 +763,19 @@ traffic:
# Can be overriden by --no-traffic
no_traffic: false
-# Use an L3 router in the packet path. This option if set will create or reuse an openstack neutron
+# Use an L3 router in the packet path. This option if set will create or reuse an OpenStack neutron
# router (PVP, PVVP) or reuse an existing L3 router (EXT) to route traffic to the destination VM.
# Can be overriden by --l3-router
l3_router: false
+# If l3_router is true and depending on ARP stale time SUT configuration
+# Gratuitous ARP (GARP) from TG port to the router is needed to keep traffic up
+# Default value: 1 packet per second
+# This value needs to be defined inferior to SUT ARP stale time to avoid GARP packets drop
+# in case of high load traffic
+periodic_gratuitous_arp: false
+gratuitous_arp_pps: 1
+
# Test configuration
# The rate pps for traffic going in reverse direction in case of unidirectional flow. Default to 1.
@@ -635,6 +842,26 @@ debug: false
# Defaults to disabled
log_file:
+# One can specify a user ID for changing ownership of output log/json files
+# - empty: depends on file existency
+# . yes? replacement, owner is unchanged
+# . no ? creation with root as user
+# - 0: this is the root user ID
+# - other: will corresponds (or not) to an existing user/group in the host
+# (the current user ID can be obtained with the command 'id -u')
+# Can be overriden by --user-id
+# Consider also that the default value below is overridable by a USER_ID env variable,
+# if nfvbench is run into a container, this information can be passed at its creation.
+# The overall precedence rule is: 'default_config (this) < env < config < command_line'
+user_id:
+
+# Similarly, the group ID is defined
+# Can be overriden by --group-id
+# Default may be set through env GROUP_ID
+# Caveat: user and group with a same name may have different numerical IDs
+# (the current group ID can be obtained with the command 'id -g')
+group_id:
+
# When enabled, all results and/or logs will be sent to a fluentd servers at the requested IPs and ports
# A list of one or more fluentd servers identified by their IPs and port numbers should be given.
# For each recipient it is possible to enable both sending logs and performance
@@ -670,10 +897,57 @@ factory_class: 'BasicFactory'
# Can be overriden by --user-label
user_label:
+# Custom information to be passed to results post-processing,
+# they will be included as is in the json report 'config' branch.
+# Useful for documenting or automating further treatments.
+# The value is any yaml object (=> open usage) - example:
+# |user_info:
+# | status: explore
+# | description:
+# | generator: VM
+# | attachment: direct
+# | target: lab-pf
+# | switch: qfx3500
+# Keys may be merged/overriden using the --user-info command line option
+# (the command-line parameter value is expressed as a json object string)
+user_info:
+
-# THESE FIELDS SHOULD BE USED VERY RARELY
+# THESE FIELDS SHOULD BE USED VERY RARELY OR ON PURPOSE
# Skip vswitch configuration and retrieving of stats
# Can be overriden by --no-vswitch-access
# Should be left to the default value (false)
no_vswitch_access: false
+
+# Enable service mode for trafic capture from TRex console (for debugging purpose)
+# Can be overriden by --service-mode
+# Should be left to the default value (false)
+service_mode: false
+
+# Disable extra flow stats (on high load traffic)
+# Can be overriden by --no-flow-stats
+# Should be left to the default value (false)
+no_flow_stats: false
+
+# Disable flow stats for latency traffic
+# Can be overriden by --no-latency-stats
+# Should be left to the default value (false)
+no_latency_stats: false
+
+# Disable latency measurements (no streams)
+# Can be overriden by --no-latency-streams
+# Should be left to the default value (false)
+no_latency_streams: false
+
+# Skip "end to end" connectivity check on traffic setup
+# Can be overriden by --no-e2e-check
+# Should be left to the default value (false)
+# This flag is usable for traffic generation only
+no_e2e_check: false
+
+# General purpose register (debugging flags)
+# Can be overriden by --debug-mask
+# Designed for development needs
+# The hexadecimal notation (0x...) is accepted.
+debug_mask: 0x00000000
diff --git a/nfvbench/chain_router.py b/nfvbench/chain_router.py
index 9372716..99114e0 100644
--- a/nfvbench/chain_router.py
+++ b/nfvbench/chain_router.py
@@ -39,15 +39,12 @@ import time
from netaddr import IPAddress
from netaddr import IPNetwork
-from log import LOG
+from .log import LOG
class ChainException(Exception):
"""Exception while operating the chains."""
- pass
-
-
class ChainRouter(object):
"""Could be a shared router across all chains or a chain private router."""
@@ -83,6 +80,11 @@ class ChainRouter(object):
.format(router=self.name,
sub_id=subnet.network['subnets'][0]))
interfaces = self.manager.neutron_client.list_ports(device_id=router['id'])['ports']
+ # This string filters nfvbench networks in case when some other specific networks
+ # created and attached to the test nfvebnch router manually or automatically
+ # like in case of HA when neutron router virtually present on several network nodes
+ interfaces = [x for x in interfaces if x['fixed_ips'][0]['subnet_id'] in
+ [s.network['subnets'][0] for s in self.subnets]]
for interface in interfaces:
if self.is_ip_in_network(
interface['fixed_ips'][0]['ip_address'],
@@ -128,6 +130,8 @@ class ChainRouter(object):
router_interface = {'subnet_id': subnet.network['subnets'][0]}
self.manager.neutron_client.add_interface_router(router_id, router_interface)
interfaces = self.manager.neutron_client.list_ports(device_id=router_id)['ports']
+ interfaces = [x for x in interfaces if x['fixed_ips'][0]['subnet_id'] in
+ [s.network['subnets'][0] for s in self.subnets]]
for interface in interfaces:
itf = interface['fixed_ips'][0]['ip_address']
cidr0 = self.manager.config.traffic_generator.tg_gateway_ip_cidrs[0]
diff --git a/nfvbench/chain_runner.py b/nfvbench/chain_runner.py
index 833373c..f045528 100644
--- a/nfvbench/chain_runner.py
+++ b/nfvbench/chain_runner.py
@@ -23,11 +23,11 @@ The ChainRunner class is in charge of coordinating:
from collections import OrderedDict
-from chaining import ChainManager
-from log import LOG
-from specs import ChainType
-from stats_manager import StatsManager
-from traffic_client import TrafficClient
+from .chaining import ChainManager
+from .log import LOG
+from .specs import ChainType
+from .stats_manager import StatsManager
+from .traffic_client import TrafficClient
class ChainRunner(object):
@@ -71,6 +71,8 @@ class ChainRunner(object):
# VLAN is discovered from the networks
gen_config.set_vlans(0, self.chain_manager.get_chain_vlans(0))
gen_config.set_vlans(1, self.chain_manager.get_chain_vlans(1))
+ else:
+ LOG.info("Ports: untagged")
# the only case we do not need to set the dest MAC is in the case of
# l2-loopback (because the traffic gen will default to use the peer MAC)
@@ -96,16 +98,37 @@ class ChainRunner(object):
gen_config.set_vxlan_endpoints(1, src_vteps[1], dst_vtep)
self.config['vxlan_gen_config'] = gen_config
+ if config.mpls:
+ # MPLS VPN is discovered from the networks
+ src_vteps = gen_config.gen_config.src_vteps
+ vtep_gateway_ips = gen_config.gen_config.vtep_gateway_ips
+ gen_config.set_mpls_inner_labels(0, self.chain_manager.get_chain_mpls_inner_labels(0))
+ gen_config.set_mpls_inner_labels(1, self.chain_manager.get_chain_mpls_inner_labels(1))
+ outer_mpls_labels_left = self.config.internal_networks.left.mpls_transport_labels
+ outer_mpls_labels_right = self.config.internal_networks.right.mpls_transport_labels
+ if outer_mpls_labels_left or outer_mpls_labels_right:
+ gen_config.set_mpls_outer_labels(0, outer_mpls_labels_left)
+ gen_config.set_mpls_outer_labels(1, outer_mpls_labels_right)
+ # Configuring source an remote VTEPs on TREx interfaces
+ gen_config.set_mpls_peers(0, src_vteps[0], vtep_gateway_ips[0])
+ gen_config.set_mpls_peers(1, src_vteps[1], vtep_gateway_ips[1])
+ self.config['mpls_gen_config'] = gen_config
+
# get an instance of the stats manager
self.stats_manager = StatsManager(self)
LOG.info('ChainRunner initialized')
def __setup_traffic(self):
+ # possibly skip connectivity check
+ if self.config.no_e2e_check:
+ LOG.info('Skipping end to end connectivity check')
+ return
self.traffic_client.setup()
if not self.config.no_traffic:
- # ARP is needed for EXT chain or VxLAN overlay unless disabled explicitly
- if (self.config.service_chain == ChainType.EXT or
- self.config.vxlan or self.config.l3_router) and not self.config.no_arp:
+ # ARP is needed for EXT chain or VxLAN overlay or MPLS unless disabled explicitly
+ if (self.config.service_chain == ChainType.EXT or self.config.mpls or
+ self.config.vxlan or self.config.l3_router or self.config.loop_vm_arp)\
+ and not self.config.no_arp:
self.traffic_client.ensure_arp_successful()
self.traffic_client.ensure_end_to_end()
@@ -132,7 +155,10 @@ class ChainRunner(object):
if self.config.single_run:
result['run_config'] = self.traffic_client.get_run_config(result)
required = result['run_config']['direction-total']['orig']['rate_pps']
- actual = result['stats']['total_tx_rate']
+ if self.config.periodic_gratuitous_arp:
+ actual = result['stats']['total_tx_rate'] + self.config.gratuitous_arp_pps
+ else:
+ actual = result['stats']['total_tx_rate']
warning = self.traffic_client.compare_tx_rates(required, actual)
if warning is not None:
result['run_config']['warning'] = warning
@@ -166,10 +192,9 @@ class ChainRunner(object):
LOG.info('Starting %dx%s benchmark...', self.config.service_chain_count, self.chain_name)
self.stats_manager.create_worker()
- if self.config.vxlan:
- # Configure vxlan tunnels
+ if self.config.vxlan or self.config.mpls:
+ # Configure vxlan or mpls tunnels
self.stats_manager.worker.config_interfaces()
-
self.__setup_traffic()
results[self.chain_name] = {'result': self.__get_chain_result()}
@@ -188,8 +213,8 @@ class ChainRunner(object):
LOG.info('Clean up skipped.')
try:
self.traffic_client.close()
- except Exception:
- LOG.exception()
+ except Exception as exc:
+ LOG.exception(exc)
if self.stats_manager:
self.stats_manager.close()
except Exception:
diff --git a/nfvbench/chain_workers.py b/nfvbench/chain_workers.py
index 0ed2648..e332d7b 100644
--- a/nfvbench/chain_workers.py
+++ b/nfvbench/chain_workers.py
@@ -43,7 +43,6 @@ class BasicWorker(object):
Specialized workers can insert their own interface stats inside each existing packet path
stats for every chain.
"""
- pass
def update_interface_stats(self, diff=False):
"""Update all interface stats.
@@ -53,4 +52,3 @@ class BasicWorker(object):
Make sure that the interface stats inserted in insert_interface_stats() are updated
with proper values
"""
- pass
diff --git a/nfvbench/chaining.py b/nfvbench/chaining.py
index 49d23b7..d6f67f9 100644
--- a/nfvbench/chaining.py
+++ b/nfvbench/chaining.py
@@ -54,10 +54,10 @@ from neutronclient.neutron import client as neutronclient
from novaclient.client import Client
from attrdict import AttrDict
-from chain_router import ChainRouter
-import compute
-from log import LOG
-from specs import ChainType
+from .chain_router import ChainRouter
+from . import compute
+from .log import LOG
+from .specs import ChainType
# Left and right index for network and port lists
LEFT = 0
RIGHT = 1
@@ -77,9 +77,6 @@ BOOT_SCRIPT_PATHNAME = os.path.join(os.path.dirname(os.path.abspath(__file__)),
class ChainException(Exception):
"""Exception while operating the chains."""
- pass
-
-
class NetworkEncaps(object):
"""Network encapsulation."""
@@ -135,6 +132,7 @@ class ChainVnfPort(object):
self.manager = vnf.manager
self.reuse = False
self.port = None
+ self.floating_ip = None
if vnf.instance:
# VNF instance is reused, we need to find an existing port that matches this instance
# and network
@@ -160,6 +158,10 @@ class ChainVnfPort(object):
'binding:vnic_type': vnic_type
}
}
+ subnet_id = chain_network.get_subnet_uuid()
+ if subnet_id:
+ body['port']['fixed_ips'] = [{'subnet_id': subnet_id}]
+
port = self.manager.neutron_client.create_port(body)
self.port = port['port']
LOG.info('Created port %s', name)
@@ -182,18 +184,35 @@ class ChainVnfPort(object):
"""Get the IP address for this port."""
return self.port['fixed_ips'][0]['ip_address']
+ def set_floating_ip(self, chain_network):
+ # create and add floating ip to port
+ try:
+ self.floating_ip = self.manager.neutron_client.create_floatingip({
+ 'floatingip': {
+ 'floating_network_id': chain_network.get_uuid(),
+ 'port_id': self.port['id'],
+ 'description': 'nfvbench floating ip for port:' + self.port['name'],
+ }})['floatingip']
+ LOG.info('Floating IP %s created and associated on port %s',
+ self.floating_ip['floating_ip_address'], self.name)
+ return self.floating_ip['floating_ip_address']
+ except Exception:
+ LOG.info('Failed to created and associated floating ip on port %s (ignored)', self.name)
+ return self.port['fixed_ips'][0]['ip_address']
+
def delete(self):
"""Delete this port instance."""
if self.reuse or not self.port:
return
- retry = 0
- while retry < self.manager.config.generic_retry_count:
+ for _ in range(0, self.manager.config.generic_retry_count):
try:
self.manager.neutron_client.delete_port(self.port['id'])
LOG.info("Deleted port %s", self.name)
+ if self.floating_ip:
+ self.manager.neutron_client.delete_floatingip(self.floating_ip['id'])
+ LOG.info("Deleted floating IP %s", self.floating_ip['description'])
return
except Exception:
- retry += 1
time.sleep(self.manager.config.generic_poll_sec)
LOG.error('Unable to delete port: %s', self.name)
@@ -225,11 +244,13 @@ class ChainNetwork(object):
self.name = self.name + suffix
self.segmentation_id = self._get_item(network_config.segmentation_id,
chain_id, auto_index=True)
+ self.subnet_name = self._get_item(network_config.subnet, chain_id)
self.physical_network = self._get_item(network_config.physical_network, chain_id)
self.reuse = False
self.network = None
self.vlan = None
+ self.router_name = None
if manager.config.l3_router and hasattr(network_config, 'router_name'):
self.router_name = network_config.router_name
try:
@@ -263,7 +284,7 @@ class ChainNetwork(object):
return item_field[index]
except IndexError:
raise ChainException("List %s is too short for chain index %d" %
- (str(item_field), index))
+ (str(item_field), index)) from IndexError
# single value is configured
if auto_index:
return item_field + index
@@ -336,6 +357,18 @@ class ChainNetwork(object):
"""
return self.network['id']
+ def get_subnet_uuid(self):
+ """
+ Extract UUID of this subnet network.
+
+ :return: UUID of this subnet network
+ """
+ for subnet in self.network['subnets']:
+ if self.subnet_name == self.manager.neutron_client \
+ .show_subnet(subnet)['subnet']['name']:
+ return subnet
+ return None
+
def get_vlan(self):
"""
Extract vlan for this network.
@@ -355,20 +388,27 @@ class ChainNetwork(object):
return self.network['provider:segmentation_id']
+ def get_mpls_inner_label(self):
+ """
+ Extract MPLS VPN Label for this network.
+
+ :return: MPLS VPN Label for this network
+ """
+
+ return self.network['provider:segmentation_id']
+
def delete(self):
"""Delete this network."""
if not self.reuse and self.network:
- retry = 0
- while retry < self.manager.config.generic_retry_count:
+ for retry in range(0, self.manager.config.generic_retry_count):
try:
self.manager.neutron_client.delete_network(self.network['id'])
LOG.info("Deleted network: %s", self.name)
return
except Exception:
- retry += 1
LOG.info('Error deleting network %s (retry %d/%d)...',
self.name,
- retry,
+ retry + 1,
self.manager.config.generic_retry_count)
time.sleep(self.manager.config.generic_poll_sec)
LOG.error('Unable to delete network: %s', self.name)
@@ -397,6 +437,7 @@ class ChainVnf(object):
# For example if 7 idle interfaces are requested, the corresp. ports will be
# at index 2 to 8
self.ports = []
+ self.management_port = None
self.routers = []
self.status = None
self.instance = None
@@ -429,10 +470,12 @@ class ChainVnf(object):
tg_mac2 = self.routers[RIGHT].ports[1]['mac_address'] # router edge mac right
# edge cidr mask left
vnf_gateway1_cidr = \
- self.ports[LEFT].get_ip() + self.manager.config.edge_networks.left.cidr[-3:]
+ self.ports[LEFT].get_ip() + self.__get_network_mask(
+ self.manager.config.edge_networks.left.cidr)
# edge cidr mask right
vnf_gateway2_cidr = \
- self.ports[RIGHT].get_ip() + self.manager.config.edge_networks.right.cidr[-3:]
+ self.ports[RIGHT].get_ip() + self.__get_network_mask(
+ self.manager.config.edge_networks.right.cidr)
if config.vm_forwarder != 'vpp':
raise ChainException(
'L3 router mode imply to set VPP as VM forwarder.'
@@ -440,18 +483,24 @@ class ChainVnf(object):
else:
tg_gateway1_ip = devices[LEFT].tg_gateway_ip_addrs
tg_gateway2_ip = devices[RIGHT].tg_gateway_ip_addrs
- tg_mac1 = remote_mac_pair[0]
- tg_mac2 = remote_mac_pair[1]
+ if not config.loop_vm_arp:
+ tg_mac1 = remote_mac_pair[0]
+ tg_mac2 = remote_mac_pair[1]
+ else:
+ tg_mac1 = ""
+ tg_mac2 = ""
g1cidr = devices[LEFT].get_gw_ip(
- self.chain.chain_id) + self.manager.config.internal_networks.left.cidr[-3:]
+ self.chain.chain_id) + self.__get_network_mask(
+ self.manager.config.internal_networks.left.cidr)
g2cidr = devices[RIGHT].get_gw_ip(
- self.chain.chain_id) + self.manager.config.internal_networks.right.cidr[-3:]
+ self.chain.chain_id) + self.__get_network_mask(
+ self.manager.config.internal_networks.right.cidr)
vnf_gateway1_cidr = g1cidr
vnf_gateway2_cidr = g2cidr
- with open(BOOT_SCRIPT_PATHNAME, 'r') as boot_script:
+ with open(BOOT_SCRIPT_PATHNAME, 'r', encoding="utf-8") as boot_script:
content = boot_script.read()
vm_config = {
'forwarder': config.vm_forwarder,
@@ -465,10 +514,27 @@ class ChainVnf(object):
'vnf_gateway2_cidr': vnf_gateway2_cidr,
'tg_mac1': tg_mac1,
'tg_mac2': tg_mac2,
- 'vif_mq_size': config.vif_multiqueue_size
+ 'vif_mq_size': config.vif_multiqueue_size,
+ 'num_mbufs': config.num_mbufs
}
+ if self.manager.config.use_management_port:
+ mgmt_ip = self.management_port.port['fixed_ips'][0]['ip_address']
+ mgmt_mask = self.__get_network_mask(self.manager.config.management_network.cidr)
+ vm_config['intf_mgmt_cidr'] = mgmt_ip + mgmt_mask
+ vm_config['intf_mgmt_ip_gw'] = self.manager.config.management_network.gateway
+ vm_config['intf_mac_mgmt'] = self.management_port.port['mac_address']
+ else:
+ # Interface management config left empty to avoid error in VM spawn
+ # if nfvbench config has values for management network but use_management_port=false
+ vm_config['intf_mgmt_cidr'] = ''
+ vm_config['intf_mgmt_ip_gw'] = ''
+ vm_config['intf_mac_mgmt'] = ''
return content.format(**vm_config)
+ @staticmethod
+ def __get_network_mask(network):
+ return '/' + network.split('/')[1]
+
def _get_vnic_type(self, port_index):
"""Get the right vnic type for given port indexself.
@@ -575,17 +641,28 @@ class ChainVnf(object):
self.instance = instance
LOG.info('Reusing existing instance %s on %s',
self.name, self.get_hypervisor_name())
+ # create management port if needed
+ if self.manager.config.use_management_port:
+ self.management_port = ChainVnfPort(self.name + '-mgmt', self,
+ self.manager.management_network, 'normal')
+ ip = self.management_port.port['fixed_ips'][0]['ip_address']
+ if self.manager.config.use_floating_ip:
+ ip = self.management_port.set_floating_ip(self.manager.floating_ip_network)
+ LOG.info("Management interface will be active using IP: %s, "
+ "and you can connect over SSH with login: nfvbench and password: nfvbench", ip)
# create or reuse/discover 2 ports per instance
if self.manager.config.l3_router:
- self.ports = [ChainVnfPort(self.name + '-' + str(index),
- self,
- networks[index + 2],
- self._get_vnic_type(index)) for index in [0, 1]]
+ for index in [0, 1]:
+ self.ports.append(ChainVnfPort(self.name + '-' + str(index),
+ self,
+ networks[index + 2],
+ self._get_vnic_type(index)))
else:
- self.ports = [ChainVnfPort(self.name + '-' + str(index),
- self,
- networks[index],
- self._get_vnic_type(index)) for index in [0, 1]]
+ for index in [0, 1]:
+ self.ports.append(ChainVnfPort(self.name + '-' + str(index),
+ self,
+ networks[index],
+ self._get_vnic_type(index)))
# create idle networks and ports only if instance is not reused
# if reused, we do not care about idle networks/ports
@@ -627,8 +704,10 @@ class ChainVnf(object):
def create_vnf(self, remote_mac_pair):
"""Create the VNF instance if it does not already exist."""
if self.instance is None:
- port_ids = [{'port-id': vnf_port.port['id']}
- for vnf_port in self.ports]
+ port_ids = []
+ if self.manager.config.use_management_port:
+ port_ids.append({'port-id': self.management_port.port['id']})
+ port_ids.extend([{'port-id': vnf_port.port['id']} for vnf_port in self.ports])
# add idle ports
for idle_port in self.idle_ports:
port_ids.append({'port-id': idle_port.port['id']})
@@ -655,8 +734,8 @@ class ChainVnf(object):
# here we MUST wait until this instance is resolved otherwise subsequent
# VNF creation can be placed in other hypervisors!
config = self.manager.config
- max_retries = (config.check_traffic_time_sec +
- config.generic_poll_sec - 1) / config.generic_poll_sec
+ max_retries = int((config.check_traffic_time_sec +
+ config.generic_poll_sec - 1) / config.generic_poll_sec)
retry = 0
for retry in range(max_retries):
status = self.get_status()
@@ -736,6 +815,8 @@ class ChainVnf(object):
if self.instance:
self.manager.comp.delete_server(self.instance)
LOG.info("Deleted instance %s", self.name)
+ if self.manager.config.use_management_port:
+ self.management_port.delete()
for port in self.ports:
port.delete()
for port in self.idle_ports:
@@ -861,7 +942,10 @@ class Chain(object):
if port_index:
# this will pick the last item in array
port_index = -1
- return self.networks[port_index].get_vlan()
+ # This string filters networks connected to TG, in case of
+ # l3-router feature we have 4 networks instead of 2
+ networks = [x for x in self.networks if not x.router_name]
+ return networks[port_index].get_vlan()
def get_vxlan(self, port_index):
"""Get the VXLAN id on a given port.
@@ -877,6 +961,20 @@ class Chain(object):
port_index = -1
return self.networks[port_index].get_vxlan()
+ def get_mpls_inner_label(self, port_index):
+ """Get the MPLS VPN Label on a given port.
+
+ port_index: left port is 0, right port is 1
+ return: the mpls_label_id or None if there is no mpls
+ """
+ # for port 1 we need to return the MPLS Label of the last network in the chain
+ # The networks array contains 2 networks for PVP [left, right]
+ # and 3 networks in the case of PVVP [left.middle,right]
+ if port_index:
+ # this will pick the last item in array
+ port_index = -1
+ return self.networks[port_index].get_mpls_inner_label()
+
def get_dest_mac(self, port_index):
"""Get the dest MAC on a given port.
@@ -1052,6 +1150,16 @@ class ChainManager(object):
self.flavor = ChainFlavor(config.flavor_type, config.flavor, self.comp)
# Get list of all existing instances to check if some instances can be reused
self.existing_instances = self.comp.get_server_list()
+ # If management port is requested for VMs, create management network (shared)
+ if self.config.use_management_port:
+ self.management_network = ChainNetwork(self, self.config.management_network,
+ None, False)
+ # If floating IP is used for management, create and share
+ # across chains the floating network
+ if self.config.use_floating_ip:
+ self.floating_ip_network = ChainNetwork(self,
+ self.config.floating_network,
+ None, False)
else:
# For EXT chains, the external_networks left and right fields in the config
# must be either a prefix string or a list of at least chain-count strings
@@ -1104,7 +1212,8 @@ class ChainManager(object):
self.vlans = [self._check_list('vlans[0]', self.config.vlans[0], re_vlan),
self._check_list('vlans[1]', self.config.vlans[1], re_vlan)]
except IndexError:
- raise ChainException('vlans parameter is mandatory. Set valid value in config file')
+ raise ChainException(
+ 'vlans parameter is mandatory. Set valid value in config file') from IndexError
def _get_dest_macs_from_config(self):
re_mac = "[0-9a-fA-F]{2}([-:])[0-9a-fA-F]{2}(\\1[0-9a-fA-F]{2}){4}$"
@@ -1118,6 +1227,8 @@ class ChainManager(object):
# if it is a single int or mac, make it a list of 1 int
if isinstance(ll, (int, str)):
ll = [ll]
+ else:
+ ll = list(ll)
for item in ll:
if not re.match(pattern, str(item)):
raise ChainException("Invalid format '{item}' specified in {fname}"
@@ -1184,7 +1295,6 @@ class ChainManager(object):
for chain in self.chains:
instances.extend(chain.get_instances())
initial_instance_count = len(instances)
- # Give additional 10 seconds per VM
max_retries = (self.config.check_traffic_time_sec + (initial_instance_count - 1) * 10 +
self.config.generic_poll_sec - 1) / self.config.generic_poll_sec
retry = 0
@@ -1231,6 +1341,7 @@ class ChainManager(object):
lookup_only = True
ext_net = self.config.external_networks
net_cfg = [AttrDict({'name': name,
+ 'subnet': None,
'segmentation_id': None,
'physical_network': None})
for name in [ext_net.left, ext_net.right]]
@@ -1317,7 +1428,7 @@ class ChainManager(object):
return: the hypervisor where the matching port runs or None if not found
"""
# _existing_ports is a dict of list of ports indexed by network id
- for port_list in self.get_existing_ports().values():
+ for port_list in list(self.get_existing_ports().values()):
for port in port_list:
try:
if port['mac_address'] == mac:
@@ -1362,6 +1473,18 @@ class ChainManager(object):
# no openstack
raise ChainException('VxLAN is only supported with OpenStack and with admin user')
+ def get_chain_mpls_inner_labels(self, port_index):
+ """Get the list of per chain MPLS VPN Labels on a given port.
+
+ port_index: left port is 0, right port is 1
+ return: a MPLSs ID list indexed by the chain index or None if no mpls
+ """
+ if self.chains and self.is_admin:
+ return [self.chains[chain_index].get_mpls_inner_label(port_index)
+ for chain_index in range(self.chain_count)]
+ # no openstack
+ raise ChainException('MPLS is only supported with OpenStack and with admin user')
+
def get_dest_macs(self, port_index):
"""Get the list of per chain dest MACs on a given port.
@@ -1418,8 +1541,7 @@ class ChainManager(object):
hypervisor = self.get_hypervisor_from_mac(dst_mac)
if hypervisor:
LOG.info('Found hypervisor for EXT chain: %s', hypervisor.hypervisor_hostname)
- return[':' + hypervisor.hypervisor_hostname]
-
+ return [':' + hypervisor.hypervisor_hostname]
# no openstack = no chains
return []
@@ -1429,5 +1551,9 @@ class ChainManager(object):
chain.delete()
for network in self.networks:
network.delete()
+ if self.config.use_management_port and hasattr(self, 'management_network'):
+ self.management_network.delete()
+ if self.config.use_floating_ip and hasattr(self, 'floating_ip_network'):
+ self.floating_ip_network.delete()
if self.flavor:
self.flavor.delete()
diff --git a/nfvbench/cleanup.py b/nfvbench/cleanup.py
index fc85b5d..cefdcfa 100644
--- a/nfvbench/cleanup.py
+++ b/nfvbench/cleanup.py
@@ -15,15 +15,15 @@
#
import sys
-import time
from neutronclient.neutron import client as nclient
from novaclient.client import Client
from novaclient.exceptions import NotFound
from tabulate import tabulate
-import credentials as credentials
-from log import LOG
+from . import credentials
+from .log import LOG
+from . import utils
class ComputeCleaner(object):
@@ -36,13 +36,6 @@ class ComputeCleaner(object):
self.servers = [server for server in all_servers
if server.name.startswith(instance_prefix)]
- def instance_exists(self, server):
- try:
- self.nova_client.servers.get(server.id)
- except NotFound:
- return False
- return True
-
def get_resource_list(self):
return [["Instance", server.name, server.id] for server in self.servers]
@@ -59,29 +52,8 @@ class ComputeCleaner(object):
if self.clean_needed(clean_options):
if self.servers:
for server in self.servers:
- try:
- LOG.info('Deleting instance %s...', server.name)
- self.nova_client.servers.delete(server.id)
- except Exception:
- LOG.exception("Instance %s deletion failed", server.name)
- LOG.info(' Waiting for %d instances to be fully deleted...', len(self.servers))
- retry_count = 15 + len(self.servers) * 5
- while True:
- retry_count -= 1
- self.servers = [server for server in self.servers if
- self.instance_exists(server)]
- if not self.servers:
- break
-
- if retry_count:
- LOG.info(' %d yet to be deleted by Nova, retries left=%d...',
- len(self.servers), retry_count)
- time.sleep(2)
- else:
- LOG.warning(
- ' instance deletion verification time-out: %d still not deleted',
- len(self.servers))
- break
+ utils.delete_server(self.nova_client, server)
+ utils.waiting_servers_deletion(self.nova_client, self.servers)
class NetworkCleaner(object):
@@ -96,7 +68,7 @@ class NetworkCleaner(object):
for net in all_networks:
netname = net['name']
for prefix in network_name_prefixes:
- if netname.startswith(prefix):
+ if prefix and netname.startswith(prefix):
self.networks.append(net)
net_ids.append(net['id'])
break
@@ -104,16 +76,25 @@ class NetworkCleaner(object):
LOG.info('Discovering ports...')
all_ports = self.neutron_client.list_ports()['ports']
self.ports = [port for port in all_ports if port['network_id'] in net_ids]
+ LOG.info('Discovering floating ips...')
+ all_floating_ips = self.neutron_client.list_floatingips()['floatingips']
+ self.floating_ips = [floating_ip for floating_ip in all_floating_ips if
+ floating_ip['floating_network_id'] in net_ids and "nfvbench" in
+ floating_ip['description']]
else:
self.ports = []
+ self.floating_ips = []
def get_resource_list(self):
res_list = [["Network", net['name'], net['id']] for net in self.networks]
res_list.extend([["Port", port['name'], port['id']] for port in self.ports])
+ res_list.extend(
+ [["Floating IP", floating_ip['description'], floating_ip['id']] for floating_ip in
+ self.floating_ips])
return res_list
def get_cleaner_code(self):
- return "networks and ports"
+ return "networks, ports and floating ips"
def clean_needed(self, clean_options):
if clean_options is None:
@@ -129,7 +110,12 @@ class NetworkCleaner(object):
self.neutron_client.delete_port(port['id'])
except Exception:
LOG.exception("Port deletion failed")
-
+ for floating_ip in self.floating_ips:
+ LOG.info("Deleting floating ip %s...", floating_ip['id'])
+ try:
+ self.neutron_client.delete_floatingip(floating_ip['id'])
+ except Exception:
+ LOG.exception("Floating IP deletion failed")
# associated subnets are automatically deleted by neutron
for net in self.networks:
LOG.info("Deleting network %s...", net['name'])
@@ -249,12 +235,14 @@ class Cleaner(object):
"""Cleaner for all NFVbench resources."""
def __init__(self, config):
- cred = credentials.Credentials(config.openrc_file, None, False)
+ cred = credentials.Credentials(config.openrc_file, config.clouds_detail, None, False)
session = cred.get_session()
self.neutron_client = nclient.Client('2.0', session=session)
self.nova_client = Client(2, session=session)
network_names = [inet['name'] for inet in config.internal_networks.values()]
network_names.extend([inet['name'] for inet in config.edge_networks.values()])
+ network_names.append(config.management_network['name'])
+ network_names.append(config.floating_network['name'])
router_names = [rtr['router_name'] for rtr in config.edge_networks.values()]
# add idle networks as well
if config.idle_networks.name:
@@ -284,20 +272,20 @@ class Cleaner(object):
LOG.info("NFVbench will delete resources shown...")
clean_options = None
if prompt:
- answer = raw_input("Do you want to delete all ressources? (y/n) ")
+ answer = input("Do you want to delete all ressources? (y/n) ")
if answer.lower() != 'y':
- print "What kind of resources do you want to delete?"
+ print("What kind of resources do you want to delete?")
all_option = ""
all_option_codes = []
for cleaner in self.cleaners:
code = cleaner.get_cleaner_code()
- print "%s: %s" % (code[0], code)
+ print(("%s: %s" % (code[0], code)))
all_option += code[0]
all_option_codes.append(code)
- print "a: all resources - a shortcut for '%s'" % all_option
+ print(("a: all resources - a shortcut for '%s'" % all_option))
all_option_codes.append("all resources")
- print "q: quit"
- answer_res = raw_input(":").lower()
+ print("q: quit")
+ answer_res = input(":").lower()
# Check only first character because answer_res can be "flavor" and it is != all
if answer_res[0] == "a":
clean_options = all_option
diff --git a/nfvbench/compute.py b/nfvbench/compute.py
index 84e3774..883dc28 100644
--- a/nfvbench/compute.py
+++ b/nfvbench/compute.py
@@ -23,8 +23,10 @@ except ImportError:
from glanceclient.v1.apiclient.exceptions import NotFound as GlanceImageNotFound
import keystoneauth1
import novaclient
+from novaclient.exceptions import NotFound
-from log import LOG
+from .log import LOG
+from . import utils
class Compute(object):
@@ -50,7 +52,7 @@ class Compute(object):
retry = 0
try:
# check image is file/url based.
- with open(image_file) as f_image:
+ with open(image_file, 'rb') as f_image:
img = self.glance_client.images.create(name=str(final_image_name),
disk_format="qcow2",
container_format="bare",
@@ -147,9 +149,17 @@ class Compute(object):
servers_list = self.novaclient.servers.list()
return servers_list
+ def instance_exists(self, server):
+ try:
+ self.novaclient.servers.get(server)
+ except NotFound:
+ return False
+ return True
+
def delete_server(self, server):
"""Delete a server from its object reference."""
- self.novaclient.servers.delete(server)
+ utils.delete_server(self.novaclient, server)
+ utils.waiting_servers_deletion(self.novaclient, [server])
def find_flavor(self, flavor_type):
"""Find a flavor by name."""
diff --git a/nfvbench/config.py b/nfvbench/config.py
index dba0962..8e77127 100644
--- a/nfvbench/config.py
+++ b/nfvbench/config.py
@@ -16,19 +16,19 @@
from attrdict import AttrDict
import yaml
-from log import LOG
+from .log import LOG
def config_load(file_name, from_cfg=None, whitelist_keys=None):
"""Load a yaml file into a config dict, merge with from_cfg if not None
The config file content taking precedence in case of duplicate
"""
try:
- with open(file_name) as fileobj:
+ with open(file_name, encoding="utf-8") as fileobj:
cfg = AttrDict(yaml.safe_load(fileobj))
except IOError:
raise Exception("Configuration file at '{}' was not found. Please use correct path "
"and verify it is visible to container if you run nfvbench in container."
- .format(file_name))
+ .format(file_name)) from IOError
if from_cfg:
if not whitelist_keys:
@@ -52,7 +52,7 @@ def config_loads(cfg_text, from_cfg=None, whitelist_keys=None):
LOG.error("String %s is not well formatted. Please verify your yaml/json string. "
"If string is a file path, file was not found. Please use correct path and "
"verify it is visible to container if you run nfvbench in container.", cfg_text)
- raise Exception(e)
+ raise Exception(e) from e
if from_cfg:
if not whitelist_keys:
whitelist_keys = []
@@ -64,7 +64,7 @@ def config_loads(cfg_text, from_cfg=None, whitelist_keys=None):
def _validate_config(subset, superset, whitelist_keys):
def get_err_config(subset, superset):
result = {}
- for k, v in subset.items():
+ for k, v in list(subset.items()):
if k not in whitelist_keys:
if k not in superset:
result.update({k: v})
diff --git a/nfvbench/config_plugin.py b/nfvbench/config_plugin.py
index a6759cd..86e5505 100644
--- a/nfvbench/config_plugin.py
+++ b/nfvbench/config_plugin.py
@@ -18,19 +18,15 @@
This module is used to override the configuration with platform specific constraints and extensions
"""
import abc
-import specs
+from . import specs
-class ConfigPluginBase(object):
+class ConfigPluginBase(object, metaclass=abc.ABCMeta):
"""Base class for config plugins."""
- __metaclass__ = abc.ABCMeta
-
class InitializationFailure(Exception):
"""Used in case of any init failure."""
- pass
-
def __init__(self, config):
"""Save configuration."""
if not config:
@@ -95,9 +91,8 @@ class ConfigPlugin(ConfigPluginBase):
"""Return RunSpec for given platform."""
return specs.RunSpec(config.no_vswitch_access, openstack_spec)
- def validate_config(self, config, openstack_spec):
+ def validate_config(self, cfg, openstack_spec):
"""Nothing to validate by default."""
- pass
def prepare_results_config(self, cfg):
"""Nothing to add the results by default."""
diff --git a/nfvbench/credentials.py b/nfvbench/credentials.py
index 9956c6f..7c48879 100644
--- a/nfvbench/credentials.py
+++ b/nfvbench/credentials.py
@@ -21,32 +21,40 @@ import getpass
from keystoneauth1.identity import v2
from keystoneauth1.identity import v3
from keystoneauth1 import session
-from log import LOG
+import openstack
+from keystoneclient.exceptions import HTTPClientError
+
+from .log import LOG
class Credentials(object):
def get_session(self):
- dct = {
- 'username': self.rc_username,
- 'password': self.rc_password,
- 'auth_url': self.rc_auth_url
- }
- auth = None
-
- if self.rc_identity_api_version == 3:
- dct.update({
- 'project_name': self.rc_project_name,
- 'project_domain_name': self.rc_project_domain_name,
- 'user_domain_name': self.rc_user_domain_name
- })
- auth = v3.Password(**dct)
+
+ if self.clouds_detail:
+ connection = openstack.connect(cloud=self.clouds_detail)
+ cred_session = connection.session
else:
- dct.update({
- 'tenant_name': self.rc_tenant_name
- })
- auth = v2.Password(**dct)
- return session.Session(auth=auth, verify=self.rc_cacert)
+ dct = {
+ 'username': self.rc_username,
+ 'password': self.rc_password,
+ 'auth_url': self.rc_auth_url
+ }
+
+ if self.rc_identity_api_version == 3:
+ dct.update({
+ 'project_name': self.rc_project_name,
+ 'project_domain_name': self.rc_project_domain_name,
+ 'user_domain_name': self.rc_user_domain_name
+ })
+ auth = v3.Password(**dct)
+ else:
+ dct.update({
+ 'tenant_name': self.rc_tenant_name
+ })
+ auth = v2.Password(**dct)
+ cred_session = session.Session(auth=auth, verify=self.rc_cacert)
+ return cred_session
def __parse_openrc(self, file):
export_re = re.compile('export OS_([A-Z_]*)="?(.*)')
@@ -91,11 +99,28 @@ class Credentials(object):
elif name == "PROJECT_DOMAIN_NAME":
self.rc_project_domain_name = value
+ # /users URL returns exception (HTTP 403) if user is not admin.
+ # try first without the version in case session already has it in
+ # Return HTTP 200 if user is admin
+ def __user_is_admin(self, url):
+ is_admin = False
+ try:
+ # check if user has admin role in OpenStack project
+ filter = {'service_type': 'identity',
+ 'interface': 'public'}
+ self.get_session().get(url, endpoint_filter=filter)
+ is_admin = True
+ except HTTPClientError as exc:
+ if exc.http_status == 403:
+ LOG.warning(
+ "User is not admin, no permission to list user roles. Exception: %s", exc)
+ return is_admin
+
#
# Read a openrc file and take care of the password
# The 2 args are passed from the command line and can be None
#
- def __init__(self, openrc_file, pwd=None, no_env=False):
+ def __init__(self, openrc_file, clouds_detail, pwd=None, no_env=False):
self.rc_password = None
self.rc_username = None
self.rc_tenant_name = None
@@ -105,20 +130,22 @@ class Credentials(object):
self.rc_user_domain_name = None
self.rc_project_domain_name = None
self.rc_project_name = None
- self.rc_identity_api_version = 2
+ self.rc_identity_api_version = 3
self.is_admin = False
+ self.clouds_detail = clouds_detail
success = True
if openrc_file:
if isinstance(openrc_file, str):
if os.path.exists(openrc_file):
- self.__parse_openrc(open(openrc_file))
+ with open(openrc_file, encoding="utf-8") as rc_file:
+ self.__parse_openrc(rc_file)
else:
LOG.error('Error: rc file does not exist %s', openrc_file)
success = False
else:
self.__parse_openrc(openrc_file)
- elif not no_env:
+ elif not clouds_detail and not no_env:
# no openrc file passed - we assume the variables have been
# sourced by the calling shell
# just check that they are present
@@ -153,34 +180,27 @@ class Credentials(object):
# always override with CLI argument if provided
- if pwd:
- self.rc_password = pwd
- # if password not know, check from env variable
- elif self.rc_auth_url and not self.rc_password and success:
- if 'OS_PASSWORD' in os.environ and not no_env:
- self.rc_password = os.environ['OS_PASSWORD']
- else:
- # interactively ask for password
- self.rc_password = getpass.getpass(
- 'Please enter your OpenStack Password: ')
- if not self.rc_password:
- self.rc_password = ""
-
- # check if user has admin role in OpenStack project
- filter = {'service_type': 'identity',
- 'interface': 'public',
- 'region_name': self.rc_region_name}
+ if not clouds_detail:
+ if pwd:
+ self.rc_password = pwd
+ # if password not know, check from env variable
+ elif self.rc_auth_url and not self.rc_password and success:
+ if 'OS_PASSWORD' in os.environ and not no_env:
+ self.rc_password = os.environ['OS_PASSWORD']
+ else:
+ # interactively ask for password
+ self.rc_password = getpass.getpass(
+ 'Please enter your OpenStack Password: ')
+ if not self.rc_password:
+ self.rc_password = ""
+
+
try:
# /users URL returns exception (HTTP 403) if user is not admin.
# try first without the version in case session already has it in
# Return HTTP 200 if user is admin
- self.get_session().get('/users', endpoint_filter=filter)
- self.is_admin = True
+ self.is_admin = self.__user_is_admin('/users') or self.__user_is_admin(
+ '/v2/users') or self.__user_is_admin('/v3/users')
except Exception as e:
- try:
- # vX/users URL returns exception (HTTP 403) if user is not admin.
- self.get_session().get('/v' + str(self.rc_identity_api_version) + '/users',
- endpoint_filter=filter)
- self.is_admin = True
- except Exception as e:
- LOG.warning("User is not admin, no permission to list user roles. Exception: %s", e)
+ LOG.warning("Error occurred during Openstack API access. "
+ "Unable to check user is admin. Exception: %s", e)
diff --git a/nfvbench/factory.py b/nfvbench/factory.py
index cad5a43..0d4b042 100644
--- a/nfvbench/factory.py
+++ b/nfvbench/factory.py
@@ -15,8 +15,8 @@
#
"""Factory for creating worker and config plugin instances."""
-import chain_workers as workers
-from config_plugin import ConfigPlugin
+from . import chain_workers as workers
+from .config_plugin import ConfigPlugin
class BasicFactory(object):
diff --git a/nfvbench/fluentd.py b/nfvbench/fluentd.py
index ad0ea34..535d640 100644
--- a/nfvbench/fluentd.py
+++ b/nfvbench/fluentd.py
@@ -114,7 +114,7 @@ class FluentLogHandler(logging.Handler):
def __get_highest_level(self):
if self.__error_counter > 0:
return logging.ERROR
- elif self.__warning_counter > 0:
+ if self.__warning_counter > 0:
return logging.WARNING
return logging.INFO
@@ -122,7 +122,7 @@ class FluentLogHandler(logging.Handler):
highest_level = self.__get_highest_level()
if highest_level == logging.INFO:
return "GOOD RUN"
- elif highest_level == logging.WARNING:
+ if highest_level == logging.WARNING:
return "RUN WITH WARNINGS"
return "RUN WITH ERRORS"
diff --git a/nfvbench/nfvbench.py b/nfvbench/nfvbench.py
index 4a2a285..891b2bb 100644
--- a/nfvbench/nfvbench.py
+++ b/nfvbench/nfvbench.py
@@ -24,23 +24,24 @@ import sys
import traceback
from attrdict import AttrDict
+from logging import FileHandler
import pbr.version
from pkg_resources import resource_string
-from __init__ import __version__
-from chain_runner import ChainRunner
-from cleanup import Cleaner
-from config import config_load
-from config import config_loads
-import credentials as credentials
-from fluentd import FluentLogHandler
-import log
-from log import LOG
-from nfvbenchd import WebServer
-from specs import ChainType
-from specs import Specs
-from summarizer import NFVBenchSummarizer
-import utils
+from .__init__ import __version__
+from .chain_runner import ChainRunner
+from .cleanup import Cleaner
+from .config import config_load
+from .config import config_loads
+from . import credentials
+from .fluentd import FluentLogHandler
+from . import log
+from .log import LOG
+from .nfvbenchd import WebServer
+from .specs import ChainType
+from .specs import Specs
+from .summarizer import NFVBenchSummarizer
+from . import utils
fluent_logger = None
@@ -59,8 +60,8 @@ class NFVBench(object):
self.config_plugin = config_plugin
self.factory = factory
self.notifier = notifier
- self.cred = credentials.Credentials(config.openrc_file, None, False) \
- if config.openrc_file else None
+ self.cred = credentials.Credentials(config.openrc_file, config.clouds_detail, None, False) \
+ if config.openrc_file or config.clouds_detail else None
self.chain_runner = None
self.specs = Specs()
self.specs.set_openstack_spec(openstack_spec)
@@ -70,11 +71,12 @@ class NFVBench(object):
def set_notifier(self, notifier):
self.notifier = notifier
- def run(self, opts, args):
+ def run(self, opts, args, dry_run=False):
"""This run() method is called for every NFVbench benchmark request.
In CLI mode, this method is called only once per invocation.
In REST server mode, this is called once per REST POST request
+ On dry_run, show the running config in json format then exit
"""
status = NFVBench.STATUS_OK
result = None
@@ -88,10 +90,16 @@ class NFVBench(object):
# recalc the running config based on the base config and options for this run
self._update_config(opts)
+ if dry_run:
+ print((json.dumps(self.config, sort_keys=True, indent=4)))
+ sys.exit(0)
+
# check that an empty openrc file (no OpenStack) is only allowed
# with EXT chain
- if not self.config.openrc_file and self.config.service_chain != ChainType.EXT:
- raise Exception("openrc_file in the configuration is required for PVP/PVVP chains")
+ if (not self.config.openrc_file and not self.config.clouds_detail) and \
+ self.config.service_chain != ChainType.EXT:
+ raise Exception("openrc_file or clouds_detail in the configuration is required"
+ " for PVP/PVVP chains")
self.specs.set_run_spec(self.config_plugin.get_run_spec(self.config,
self.specs.openstack))
@@ -164,7 +172,9 @@ class NFVBench(object):
self.config.service_chain,
self.config.service_chain_count,
self.config.flow_count,
- self.config.frame_sizes)
+ self.config.frame_sizes,
+ self.config.user_id,
+ self.config.group_id)
def _update_config(self, opts):
"""Recalculate the running config based on the base config and opts.
@@ -172,17 +182,56 @@ class NFVBench(object):
Sanity check on the config is done here as well.
"""
self.config = AttrDict(dict(self.base_config))
+ # Update log file handler if needed after a config update (REST mode)
+ if 'log_file' in opts:
+ if opts['log_file']:
+ (path, _filename) = os.path.split(opts['log_file'])
+ if not os.path.exists(path):
+ LOG.warning(
+ 'Path %s does not exist. Please verify root path is shared with host. Path '
+ 'will be created.', path)
+ os.makedirs(path)
+ LOG.info('%s is created.', path)
+ if not any(isinstance(h, FileHandler) for h in log.getLogger().handlers):
+ log.add_file_logger(opts['log_file'])
+ else:
+ for h in log.getLogger().handlers:
+ if isinstance(h, FileHandler) and h.baseFilename != opts['log_file']:
+ # clean log file handler
+ log.getLogger().removeHandler(h)
+ log.add_file_logger(opts['log_file'])
+
self.config.update(opts)
config = self.config
config.service_chain = config.service_chain.upper()
config.service_chain_count = int(config.service_chain_count)
if config.l2_loopback:
- # force the number of chains to be 1 in case of l2 loopback
- config.service_chain_count = 1
+ # force the number of chains to be 1 in case of untagged l2 loopback
+ # (on the other hand, multiple L2 vlan tagged service chains are allowed)
+ if not config.vlan_tagging:
+ config.service_chain_count = 1
config.service_chain = ChainType.EXT
config.no_arp = True
LOG.info('Running L2 loopback: using EXT chain/no ARP')
+
+ # allow oversized vlan lists, just clip them
+ try:
+ vlans = [list(v) for v in config.vlans]
+ for v in vlans:
+ del v[config.service_chain_count:]
+ config.vlans = vlans
+ except Exception:
+ pass
+
+ # traffic profile override options
+ if 'frame_sizes' in opts:
+ unidir = False
+ if 'unidir' in opts:
+ unidir = opts['unidir']
+ override_custom_traffic(config, opts['frame_sizes'], unidir)
+ LOG.info("Frame size has been set to %s for current configuration", opts['frame_sizes'])
+
config.flow_count = utils.parse_flow_count(config.flow_count)
required_flow_count = config.service_chain_count * 2
if config.flow_count < required_flow_count:
@@ -194,6 +243,13 @@ class NFVBench(object):
if config.flow_count % 2:
config.flow_count += 1
+ # Possibly adjust the cache size
+ if config.cache_size < 0:
+ config.cache_size = config.flow_count
+
+ # The size must be capped to 10000 (where does this limit come from?)
+ config.cache_size = min(config.cache_size, 10000)
+
config.duration_sec = float(config.duration_sec)
config.interval_sec = float(config.interval_sec)
config.pause_sec = float(config.pause_sec)
@@ -206,7 +262,6 @@ class NFVBench(object):
if config.flavor.vcpus < 2:
raise Exception("Flavor vcpus must be >= 2")
-
config.ndr_run = (not config.no_traffic and
'ndr' in config.rate.strip().lower().split('_'))
config.pdr_run = (not config.no_traffic and
@@ -232,16 +287,36 @@ class NFVBench(object):
raise Exception('vif_multiqueue_size (%d) must be in [1..8]' %
config.vif_multiqueue_size)
- # VxLAN sanity checks
- if config.vxlan:
+ # VxLAN and MPLS sanity checks
+ if config.vxlan or config.mpls:
if config.vlan_tagging:
config.vlan_tagging = False
- LOG.info('VxLAN: vlan_tagging forced to False '
+ config.no_latency_streams = True
+ config.no_latency_stats = True
+ config.no_flow_stats = True
+ LOG.info('VxLAN or MPLS: vlan_tagging forced to False '
'(inner VLAN tagging must be disabled)')
self.config_plugin.validate_config(config, self.specs.openstack)
+def bool_arg(x):
+ """Argument type to be used in parser.add_argument()
+ When a boolean like value is expected to be given
+ """
+ return (str(x).lower() != 'false') \
+ and (str(x).lower() != 'no') \
+ and (str(x).lower() != '0')
+
+
+def int_arg(x):
+ """Argument type to be used in parser.add_argument()
+ When an integer type value is expected to be given
+ (returns 0 if argument is invalid, hexa accepted)
+ """
+ return int(x, 0)
+
+
def _parse_opts_from_cli():
parser = argparse.ArgumentParser()
@@ -331,6 +406,12 @@ def _parse_opts_from_cli():
action='store_true',
help='Use L3 neutron routers to handle traffic')
+ parser.add_argument('-garp', '--gratuitous-arp', dest='periodic_gratuitous_arp',
+ default=None,
+ action='store_true',
+ help='Use gratuitous ARP to maintain session between TG '
+ 'and L3 routers to handle traffic')
+
parser.add_argument('-0', '--no-traffic', dest='no_traffic',
default=None,
action='store_true',
@@ -342,6 +423,12 @@ def _parse_opts_from_cli():
help='Do not use ARP to find MAC addresses, '
'instead use values in config file')
+ parser.add_argument('--loop-vm-arp', dest='loop_vm_arp',
+ default=None,
+ action='store_true',
+ help='Use ARP to find MAC addresses '
+ 'instead of using values from TRex ports (VPP forwarder only)')
+
parser.add_argument('--no-vswitch-access', dest='no_vswitch_access',
default=None,
action='store_true',
@@ -352,6 +439,11 @@ def _parse_opts_from_cli():
action='store_true',
help='Enable VxLan encapsulation')
+ parser.add_argument('--mpls', dest='mpls',
+ default=None,
+ action='store_true',
+ help='Enable MPLS encapsulation')
+
parser.add_argument('--no-cleanup', dest='no_cleanup',
default=None,
action='store_true',
@@ -389,10 +481,15 @@ def _parse_opts_from_cli():
action='store_true',
help='print the default config in yaml format (unedited)')
+ parser.add_argument('--show-pre-config', dest='show_pre_config',
+ default=None,
+ action='store_true',
+ help='print the config in json format (cfg file applied)')
+
parser.add_argument('--show-config', dest='show_config',
default=None,
action='store_true',
- help='print the running config in json format')
+ help='print the running config in json format (final)')
parser.add_argument('-ss', '--show-summary', dest='summary',
action='store',
@@ -430,8 +527,109 @@ def _parse_opts_from_cli():
parser.add_argument('--l2-loopback', '--l2loopback', dest='l2_loopback',
action='store',
- metavar='<vlan>',
- help='Port to port or port to switch to port L2 loopback with VLAN id')
+ metavar='<vlan(s)|no-tag|true|false>',
+ help='Port to port or port to switch to port L2 loopback '
+ 'tagged with given VLAN id(s) or not (given \'no-tag\') '
+ '\'true\': use current vlans; \'false\': disable this mode.')
+
+ parser.add_argument('--i40e-mixed', dest='i40e_mixed',
+ action='store',
+ default=None,
+ metavar='<ignore,check,unbind>',
+ help='TRex behavior when dealing with a i40e network card driver'
+ ' [ https://trex-tgn.cisco.com/youtrack/issue/trex-528 ]')
+
+ parser.add_argument('--user-info', dest='user_info',
+ action='append',
+ metavar='<data>',
+ help='Custom data to be included as is '
+ 'in the json report config branch - '
+ ' example, pay attention! no space: '
+ '--user-info=\'{"status":"explore","description":'
+ '{"target":"lab","ok":true,"version":2020}}\' - '
+ 'this option may be repeated; given data will be merged.')
+
+ parser.add_argument('--vlan-tagging', dest='vlan_tagging',
+ type=bool_arg,
+ metavar='<boolean>',
+ action='store',
+ default=None,
+ help='Override the NFVbench \'vlan_tagging\' parameter')
+
+ parser.add_argument('--intf-speed', dest='intf_speed',
+ metavar='<speed>',
+ action='store',
+ default=None,
+ help='Override the NFVbench \'intf_speed\' '
+ 'parameter (e.g. 10Gbps, auto, 16.72Gbps)')
+
+ parser.add_argument('--cores', dest='cores',
+ type=int_arg,
+ metavar='<number>',
+ action='store',
+ default=None,
+ help='Override the T-Rex \'cores\' parameter')
+
+ parser.add_argument('--cache-size', dest='cache_size',
+ type=int_arg,
+ metavar='<size>',
+ action='store',
+ default=None,
+ help='Specify the FE cache size (default: 0, flow-count if < 0)')
+
+ parser.add_argument('--service-mode', dest='service_mode',
+ action='store_true',
+ default=None,
+ help='Enable T-Rex service mode (for debugging purpose)')
+
+ parser.add_argument('--no-e2e-check', dest='no_e2e_check',
+ action='store_true',
+ default=None,
+ help='Skip "end to end" connectivity check (on test purpose)')
+
+ parser.add_argument('--no-flow-stats', dest='no_flow_stats',
+ action='store_true',
+ default=None,
+ help='Disable additional flow stats (on high load traffic)')
+
+ parser.add_argument('--no-latency-stats', dest='no_latency_stats',
+ action='store_true',
+ default=None,
+ help='Disable flow stats for latency traffic')
+
+ parser.add_argument('--no-latency-streams', dest='no_latency_streams',
+ action='store_true',
+ default=None,
+ help='Disable latency measurements (no streams)')
+
+ parser.add_argument('--user-id', dest='user_id',
+ type=int_arg,
+ metavar='<uid>',
+ action='store',
+ default=None,
+ help='Change json/log files ownership with this user (int)')
+
+ parser.add_argument('--group-id', dest='group_id',
+ type=int_arg,
+ metavar='<gid>',
+ action='store',
+ default=None,
+ help='Change json/log files ownership with this group (int)')
+
+ parser.add_argument('--show-trex-log', dest='show_trex_log',
+ default=None,
+ action='store_true',
+ help='Show the current TRex local server log file contents'
+ ' => diagnostic/help in case of configuration problems')
+
+ parser.add_argument('--debug-mask', dest='debug_mask',
+ type=int_arg,
+ metavar='<mask>',
+ action='store',
+ default=None,
+ help='General purpose register (debugging flags), '
+ 'the hexadecimal notation (0x...) is accepted.'
+ 'Designed for development needs (default: 0).')
opts, unknown_opts = parser.parse_known_args()
return opts, unknown_opts
@@ -497,13 +695,20 @@ def main():
log.setup()
# load default config file
config, default_cfg = load_default_config()
+ # possibly override the default user_id & group_id values
+ if 'USER_ID' in os.environ:
+ config.user_id = int(os.environ['USER_ID'])
+ if 'GROUP_ID' in os.environ:
+ config.group_id = int(os.environ['GROUP_ID'])
+
# create factory for platform specific classes
try:
factory_module = importlib.import_module(config['factory_module'])
factory = getattr(factory_module, config['factory_class'])()
except AttributeError:
raise Exception("Requested factory module '{m}' or class '{c}' was not found."
- .format(m=config['factory_module'], c=config['factory_class']))
+ .format(m=config['factory_module'],
+ c=config['factory_class'])) from AttributeError
# create config plugin for this platform
config_plugin = factory.get_config_plugin_class()(config)
config = config_plugin.get_config()
@@ -512,26 +717,40 @@ def main():
log.set_level(debug=opts.debug)
if opts.version:
- print pbr.version.VersionInfo('nfvbench').version_string_with_vcs()
+ print((pbr.version.VersionInfo('nfvbench').version_string_with_vcs()))
sys.exit(0)
if opts.summary:
- with open(opts.summary) as json_data:
+ with open(opts.summary, encoding="utf-8") as json_data:
result = json.load(json_data)
if opts.user_label:
result['config']['user_label'] = opts.user_label
- print NFVBenchSummarizer(result, fluent_logger)
+ print((NFVBenchSummarizer(result, fluent_logger)))
sys.exit(0)
# show default config in text/yaml format
if opts.show_default_config:
- print default_cfg
+ print((default_cfg.decode("utf-8")))
+ sys.exit(0)
+
+ # dump the contents of the trex log file
+ if opts.show_trex_log:
+ try:
+ with open('/tmp/trex.log', encoding="utf-8") as trex_log_file:
+ print(trex_log_file.read(), end="")
+ except FileNotFoundError:
+ print("No TRex log file found!")
sys.exit(0)
+ # mask info logging in case of further config dump
+ if opts.show_config or opts.show_pre_config:
+ LOG.setLevel(log.logging.WARNING)
+
config.name = ''
if opts.config:
# do not check extra_specs in flavor as it can contain any key/value pairs
- whitelist_keys = ['extra_specs']
+ # the same principle applies also to the optional user_info open property
+ whitelist_keys = ['extra_specs', 'user_info']
# override default config options with start config at path parsed from CLI
# check if it is an inline yaml/json config or a file name
if os.path.isfile(opts.config):
@@ -542,6 +761,11 @@ def main():
LOG.info('Loading configuration string: %s', opts.config)
config = config_loads(opts.config, config, whitelist_keys)
+ # show current config in json format (before CLI overriding)
+ if opts.show_pre_config:
+ print((json.dumps(config, sort_keys=True, indent=4)))
+ sys.exit(0)
+
# setup the fluent logger as soon as possible right after the config plugin is called,
# if there is any logging or result tag is set then initialize the fluent logger
for fluentd in config.fluentd:
@@ -553,41 +777,124 @@ def main():
# traffic profile override options
override_custom_traffic(config, opts.frame_sizes, opts.unidir)
- # copy over cli options that are used in config
+ # Copy over some of the cli options that are used in config.
+ # This explicit copy is sometimes necessary
+ # because some early evaluation depends on them
+ # and cannot wait for _update_config() coming further.
+ # It is good practice then to set them to None (<=> done)
+ # and even required if a specific conversion is performed here
+ # that would be corrupted by a default update (simple copy).
+ # On the other hand, some excessive assignments have been removed
+ # from here, since the _update_config() procedure does them well.
+
config.generator_profile = opts.generator_profile
- if opts.sriov:
+ if opts.sriov is not None:
config.sriov = True
- if opts.log_file:
+ opts.sriov = None
+ if opts.log_file is not None:
config.log_file = opts.log_file
- if opts.service_chain:
+ opts.log_file = None
+ if opts.user_id is not None:
+ config.user_id = opts.user_id
+ opts.user_id = None
+ if opts.group_id is not None:
+ config.group_id = opts.group_id
+ opts.group_id = None
+ if opts.service_chain is not None:
config.service_chain = opts.service_chain
- if opts.service_chain_count:
- config.service_chain_count = opts.service_chain_count
- if opts.no_vswitch_access:
- config.no_vswitch_access = opts.no_vswitch_access
- if opts.hypervisor:
+ opts.service_chain = None
+ if opts.hypervisor is not None:
# can be any of 'comp1', 'nova:', 'nova:comp1'
config.compute_nodes = opts.hypervisor
- if opts.vxlan:
- config.vxlan = True
- if opts.restart:
- config.restart = True
- # port to port loopback (direct or through switch)
- if opts.l2_loopback:
- config.l2_loopback = True
- if config.service_chain != ChainType.EXT:
- LOG.info('Changing service chain type to EXT')
- config.service_chain = ChainType.EXT
- if not config.no_arp:
- LOG.info('Disabling ARP')
- config.no_arp = True
- config.vlans = [int(opts.l2_loopback), int(opts.l2_loopback)]
- LOG.info('Running L2 loopback: using EXT chain/no ARP')
+ opts.hypervisor = None
+ if opts.debug_mask is not None:
+ config.debug_mask = opts.debug_mask
+ opts.debug_mask = None
+
+ # convert 'user_info' opt from json string to dictionnary
+ # and merge the result with the current config dictionnary
+ if opts.user_info is not None:
+ for user_info_json in opts.user_info:
+ user_info_dict = json.loads(user_info_json)
+ if config.user_info:
+ config.user_info = config.user_info + user_info_dict
+ else:
+ config.user_info = user_info_dict
+ opts.user_info = None
- if opts.use_sriov_middle_net:
- if (not config.sriov) or (config.service_chain != ChainType.PVVP):
- raise Exception("--use-sriov-middle-net is only valid for PVVP with SRIOV")
- config.use_sriov_middle_net = True
+ # port to port loopback (direct or through switch)
+ # we accept the following syntaxes for the CLI argument
+ # 'false' : mode not enabled
+ # 'true' : mode enabled with currently defined vlan IDs
+ # 'no-tag' : mode enabled with no vlan tagging
+ # <vlan IDs>: mode enabled using the given (pair of) vlan ID lists
+ # - If present, a '_' char will separate left an right ports lists
+ # e.g. 'a_x' => vlans: [[a],[x]]
+ # 'a,b,c_x,y,z' => [[a,b,c],[x,y,z]]
+ # - Otherwise the given vlan ID list applies to both sides
+ # e.g. 'a' => vlans: [[a],[a]]
+ # 'a,b' => [[a,b],[a,b]]
+ # - Vlan lists size needs to be at least the actual SCC value
+ # - Unless overriden in CLI opts, config.service_chain_count
+ # is adjusted to the size of the VLAN ID lists given here.
+
+ if opts.l2_loopback is not None:
+ arg_pair = opts.l2_loopback.lower().split('_')
+ if arg_pair[0] == 'false':
+ config.l2_loopback = False
+ else:
+ config.l2_loopback = True
+ if config.service_chain != ChainType.EXT:
+ LOG.info('Changing service chain type to EXT')
+ config.service_chain = ChainType.EXT
+ if not config.no_arp:
+ LOG.info('Disabling ARP')
+ config.no_arp = True
+ if arg_pair[0] == 'true':
+ pass
+ else:
+ # here explicit (not)tagging is not CLI overridable
+ opts.vlan_tagging = None
+ if arg_pair[0] == 'no-tag':
+ config.vlan_tagging = False
+ else:
+ config.vlan_tagging = True
+ if len(arg_pair) == 1 or not arg_pair[1]:
+ arg_pair = [arg_pair[0], arg_pair[0]]
+ vlans = [[], []]
+
+ def append_vlan(port, vlan_id):
+ # a vlan tag value must be in [0..4095]
+ if vlan_id not in range(0, 4096):
+ raise ValueError
+ vlans[port].append(vlan_id)
+ try:
+ for port in [0, 1]:
+ vlan_ids = arg_pair[port].split(',')
+ for vlan_id in vlan_ids:
+ append_vlan(port, int(vlan_id))
+ if len(vlans[0]) != len(vlans[1]):
+ raise ValueError
+ except ValueError:
+ # at least one invalid tag => no tagging
+ config.vlan_tagging = False
+ if config.vlan_tagging:
+ config.vlans = vlans
+ # force service chain count if not CLI overriden
+ if opts.service_chain_count is None:
+ config.service_chain_count = len(vlans[0])
+ opts.l2_loopback = None
+
+ if config.i40e_mixed is None:
+ config.i40e_mixed = 'ignore'
+ if config.use_sriov_middle_net is None:
+ config.use_sriov_middle_net = False
+ if opts.use_sriov_middle_net is not None:
+ config.use_sriov_middle_net = opts.use_sriov_middle_net
+ opts.use_sriov_middle_net = None
+ if (config.use_sriov_middle_net and (
+ (not config.sriov) or (config.service_chain != ChainType.PVVP))):
+ raise Exception("--use-sriov-middle-net is only valid for PVVP with SRIOV")
if config.sriov and config.service_chain != ChainType.EXT:
# if sriov is requested (does not apply to ext chains)
@@ -597,11 +904,6 @@ def main():
if config.service_chain == ChainType.PVVP and config.use_sriov_middle_net:
check_physnet("middle", config.internal_networks.middle)
- # show running config in json format
- if opts.show_config:
- print json.dumps(config, sort_keys=True, indent=4)
- sys.exit(0)
-
# update the config in the config plugin as it might have changed
# in a copy of the dict (config plugin still holds the original dict)
config_plugin.set_config(config)
@@ -612,6 +914,13 @@ def main():
# add file log if requested
if config.log_file:
log.add_file_logger(config.log_file)
+ # possibly change file ownership
+ uid = config.user_id
+ gid = config.group_id
+ if gid is None:
+ gid = uid
+ if uid is not None:
+ os.chown(config.log_file, uid, gid)
openstack_spec = config_plugin.get_openstack_spec() if config.openrc_file \
else None
@@ -628,6 +937,7 @@ def main():
server.run(host=opts.host, port=port)
# server.run() should never return
else:
+ dry_run = opts.show_config
with utils.RunLock():
run_summary_required = True
if unknown_opts:
@@ -636,10 +946,10 @@ def main():
raise Exception(err_msg)
# remove unfilled values
- opts = {k: v for k, v in vars(opts).iteritems() if v is not None}
+ opts = {k: v for k, v in list(vars(opts).items()) if v is not None}
# get CLI args
params = ' '.join(str(e) for e in sys.argv[1:])
- result = nfvbench_instance.run(opts, params)
+ result = nfvbench_instance.run(opts, params, dry_run=dry_run)
if 'error_message' in result:
raise Exception(result['error_message'])
@@ -652,7 +962,7 @@ def main():
'status': NFVBench.STATUS_ERROR,
'error_message': traceback.format_exc()
})
- print str(exc)
+ print((str(exc)))
finally:
if fluent_logger:
# only send a summary record if there was an actual nfvbench run or
diff --git a/nfvbench/nfvbenchd.py b/nfvbench/nfvbenchd.py
index ae89e7a..07f1eea 100644
--- a/nfvbench/nfvbenchd.py
+++ b/nfvbench/nfvbenchd.py
@@ -15,7 +15,7 @@
#
import json
-import Queue
+import queue
from threading import Thread
import uuid
@@ -23,13 +23,12 @@ from flask import Flask
from flask import jsonify
from flask import request
-from summarizer import NFVBenchSummarizer
+from .summarizer import NFVBenchSummarizer
-from log import LOG
-from utils import byteify
-from utils import RunLock
+from .log import LOG
+from .utils import RunLock
-from __init__ import __version__
+from .__init__ import __version__
STATUS_OK = 'OK'
STATUS_ERROR = 'ERROR'
@@ -48,7 +47,7 @@ def result_json(status, message, request_id=None):
def load_json(data):
- return json.loads(json.dumps(data), object_hook=byteify)
+ return json.loads(json.dumps(data))
def get_uuid():
@@ -57,7 +56,7 @@ def get_uuid():
class Ctx(object):
MAXLEN = 5
- run_queue = Queue.Queue()
+ run_queue = queue.Queue()
busy = False
result = None
results = {}
@@ -101,16 +100,15 @@ class Ctx(object):
res = Ctx.results[request_id]
except KeyError:
return None
-
+ # pylint: disable=unsubscriptable-object
if Ctx.result and request_id == Ctx.result['request_id']:
Ctx.result = None
-
- return res
- else:
- res = Ctx.result
- if res:
- Ctx.result = None
return res
+ # pylint: enable=unsubscriptable-object
+ res = Ctx.result
+ if res:
+ Ctx.result = None
+ return res
@staticmethod
def is_busy():
@@ -159,20 +157,18 @@ def setup_flask():
return jsonify(res)
# result for given request_id not found
return jsonify(result_json(STATUS_NOT_FOUND, not_found_msg, request_id))
- else:
- if Ctx.is_busy():
- # task still pending, return with request_id
- return jsonify(result_json(STATUS_PENDING,
- pending_msg,
- Ctx.get_current_request_id()))
-
- res = Ctx.get_result()
- if res:
- return jsonify(res)
- return jsonify(not_busy_json)
+ if Ctx.is_busy():
+ # task still pending, return with request_id
+ return jsonify(result_json(STATUS_PENDING,
+ pending_msg,
+ Ctx.get_current_request_id()))
- return app
+ res = Ctx.get_result()
+ if res:
+ return jsonify(res)
+ return jsonify(not_busy_json)
+ return app
class WebServer(object):
"""This class takes care of the web server. Caller should simply create an instance
@@ -200,7 +196,7 @@ class WebServer(object):
# print config
try:
# remove unfilled values as we do not want them to override default values with None
- config = {k: v for k, v in config.items() if v is not None}
+ config = {k: v for k, v in list(config.items()) if v is not None}
with RunLock():
if self.fluent_logger:
self.fluent_logger.start_new_run()
@@ -214,6 +210,8 @@ class WebServer(object):
try:
summary = NFVBenchSummarizer(results['result'], self.fluent_logger)
LOG.info(str(summary))
+ if 'json' in config and 'result' in results and results['status']:
+ self.nfvbench_runner.save(results['result'])
except KeyError:
# in case of error, 'result' might be missing
if 'error_message' in results:
diff --git a/nfvbench/nfvbenchvm/nfvbenchvm.conf b/nfvbench/nfvbenchvm/nfvbenchvm.conf
index a8e2551..8f5e7e9 100644
--- a/nfvbench/nfvbenchvm/nfvbenchvm.conf
+++ b/nfvbench/nfvbenchvm/nfvbenchvm.conf
@@ -10,3 +10,7 @@ TG_NET2={tg_net2}
TG_GATEWAY1_IP={tg_gateway1_ip}
TG_GATEWAY2_IP={tg_gateway2_ip}
VIF_MQ_SIZE={vif_mq_size}
+NUM_MBUFS={num_mbufs}
+INTF_MGMT_CIDR={intf_mgmt_cidr}
+INTF_MGMT_IP_GW={intf_mgmt_ip_gw}
+INTF_MAC_MGMT={intf_mac_mgmt} \ No newline at end of file
diff --git a/nfvbench/packet_stats.py b/nfvbench/packet_stats.py
index 3203b72..d3ec78a 100644
--- a/nfvbench/packet_stats.py
+++ b/nfvbench/packet_stats.py
@@ -21,7 +21,8 @@ PacketPathStatsManager manages all packet path stats for all chains.
import copy
-from traffic_gen.traffic_base import Latency
+from hdrh.histogram import HdrHistogram
+from .traffic_gen.traffic_base import Latency
class InterfaceStats(object):
"""A class to hold the RX and TX counters for a virtual or physical interface.
@@ -141,7 +142,7 @@ class PacketPathStats(object):
chain.
"""
- def __init__(self, if_stats, aggregate=False):
+ def __init__(self, config, if_stats, aggregate=False):
"""Create a packet path stats intance with the list of associated if stats.
if_stats: a list of interface stats that compose this packet path stats
@@ -150,6 +151,7 @@ class PacketPathStats(object):
Aggregate packet path stats are the only one that should show counters for shared
interface stats
"""
+ self.config = config
self.if_stats = if_stats
# latency for packets sent from port 0 and 1
self.latencies = [Latency(), Latency()]
@@ -170,7 +172,7 @@ class PacketPathStats(object):
ifstats.add_if_stats(pps.if_stats[index])
@staticmethod
- def get_agg_packet_path_stats(pps_list):
+ def get_agg_packet_path_stats(config, pps_list):
"""Get the aggregated packet path stats from a list of packet path stats.
Interface counters are added, latency stats are updated.
@@ -179,7 +181,7 @@ class PacketPathStats(object):
for pps in pps_list:
if agg_pps is None:
# Get a clone of the first in the list
- agg_pps = PacketPathStats(pps.get_cloned_if_stats(), aggregate=True)
+ agg_pps = PacketPathStats(config, pps.get_cloned_if_stats(), aggregate=True)
else:
agg_pps.add_packet_path_stats(pps)
# aggregate all latencies
@@ -237,8 +239,21 @@ class PacketPathStats(object):
results = {'lat_min_usec': latency.min_usec,
'lat_max_usec': latency.max_usec,
'lat_avg_usec': latency.avg_usec}
- if latency.hdrh:
+ if latency.hdrh_available():
results['hdrh'] = latency.hdrh
+ decoded_histogram = HdrHistogram.decode(latency.hdrh)
+ results['lat_percentile'] = {}
+ # override min max and avg from hdrh (only if histogram is valid)
+ if decoded_histogram.get_total_count() != 0:
+ results['lat_min_usec'] = decoded_histogram.get_min_value()
+ results['lat_max_usec'] = decoded_histogram.get_max_value()
+ results['lat_avg_usec'] = decoded_histogram.get_mean_value()
+ for percentile in self.config.lat_percentiles:
+ results['lat_percentile'][percentile] = decoded_histogram.\
+ get_value_at_percentile(percentile)
+ else:
+ for percentile in self.config.lat_percentiles:
+ results['lat_percentile'][percentile] = 'n/a'
else:
results = {}
results['packets'] = counters
@@ -251,12 +266,13 @@ class PacketPathStatsManager(object):
Each run will generate packet path stats for 1 or more chains.
"""
- def __init__(self, pps_list):
+ def __init__(self, config, pps_list):
"""Create a packet path stats intance with the list of associated if stats.
pps_list: a list of packet path stats indexed by the chain id.
All packet path stats must have the same length.
"""
+ self.config = config
self.pps_list = pps_list
def insert_pps_list(self, chain_index, if_stats):
@@ -288,11 +304,11 @@ class PacketPathStatsManager(object):
chains = {}
# insert the aggregated row if applicable
if len(self.pps_list) > 1:
- agg_pps = PacketPathStats.get_agg_packet_path_stats(self.pps_list)
+ agg_pps = PacketPathStats.get_agg_packet_path_stats(self.config, self.pps_list)
chains['total'] = agg_pps.get_stats(reverse)
for index, pps in enumerate(self.pps_list):
- chains[index] = pps.get_stats(reverse)
+ chains[str(index)] = pps.get_stats(reverse)
return {'interfaces': self._get_if_agg_name(reverse),
'chains': chains}
@@ -307,11 +323,11 @@ class PacketPathStatsManager(object):
'Forward': {
'interfaces': ['Port0', 'vhost0', 'Port1'],
'chains': {
- 0: {'packets': [2000054, 1999996, 1999996],
+ '0': {'packets': [2000054, 1999996, 1999996],
'min_usec': 10,
'max_usec': 187,
'avg_usec': 45},
- 1: {...},
+ '1': {...},
'total': {...}
}
},
diff --git a/nfvbench/specs.py b/nfvbench/specs.py
index 75fe703..ec5e24e 100644
--- a/nfvbench/specs.py
+++ b/nfvbench/specs.py
@@ -17,11 +17,13 @@
class Encaps(object):
VLAN = "VLAN"
VxLAN = "VxLAN"
+ MPLS = "MPLS"
NO_ENCAPS = "NONE"
encaps_mapping = {
'VLAN': VLAN,
'VXLAN': VxLAN,
+ 'MPLS': MPLS,
'NONE': NO_ENCAPS
}
diff --git a/nfvbench/stats_manager.py b/nfvbench/stats_manager.py
index 98ac413..6fa98bd 100644
--- a/nfvbench/stats_manager.py
+++ b/nfvbench/stats_manager.py
@@ -15,9 +15,9 @@
#
import time
-from log import LOG
-from packet_stats import PacketPathStatsManager
-from stats_collector import IntervalCollector
+from .log import LOG
+from .packet_stats import PacketPathStatsManager
+from .stats_collector import IntervalCollector
class StatsManager(object):
@@ -35,7 +35,7 @@ class StatsManager(object):
if self.config.single_run:
pps_list = []
self.traffic_client.insert_interface_stats(pps_list)
- self.pps_mgr = PacketPathStatsManager(pps_list)
+ self.pps_mgr = PacketPathStatsManager(self.config, pps_list)
else:
self.pps_mgr = None
self.worker = None
diff --git a/nfvbench/summarizer.py b/nfvbench/summarizer.py
index 7520076..7c69f52 100644
--- a/nfvbench/summarizer.py
+++ b/nfvbench/summarizer.py
@@ -47,7 +47,7 @@ def _annotate_chain_stats(chain_stats, nodrop_marker='=>'):
In the case of shared net, some columns in packets array can have ''.
Some columns cab also be None which means the data is not available.
"""
- for stats in chain_stats.values():
+ for stats in list(chain_stats.values()):
packets = stats['packets']
count = len(packets)
if count > 1:
@@ -97,7 +97,7 @@ class Formatter(object):
def standard(data):
if isinstance(data, int):
return Formatter.int(data)
- elif isinstance(data, float):
+ if isinstance(data, float):
return Formatter.float(4)(data)
return Formatter.fixed(data)
@@ -130,7 +130,7 @@ class Formatter(object):
def percentage(data):
if data is None:
return ''
- elif math.isnan(data):
+ if math.isnan(data):
return '-'
return Formatter.suffix('%')(Formatter.float(4)(data))
@@ -139,7 +139,7 @@ class Table(object):
"""ASCII readable table class."""
def __init__(self, header):
- header_row, self.formatters = zip(*header)
+ header_row, self.formatters = list(zip(*header))
self.data = [header_row]
self.columns = len(header_row)
@@ -195,7 +195,7 @@ class Summarizer(object):
def _put_dict(self, data):
with self._create_block(False):
- for key, value in data.iteritems():
+ for key, value in list(data.items()):
if isinstance(value, dict):
self._put(key + ':')
self._put_dict(value)
@@ -219,35 +219,6 @@ class Summarizer(object):
class NFVBenchSummarizer(Summarizer):
"""Summarize nfvbench json result."""
- ndr_pdr_header = [
- ('-', Formatter.fixed),
- ('L2 Frame Size', Formatter.standard),
- ('Rate (fwd+rev)', Formatter.bits),
- ('Rate (fwd+rev)', Formatter.suffix(' pps')),
- ('Avg Drop Rate', Formatter.suffix('%')),
- ('Avg Latency (usec)', Formatter.standard),
- ('Min Latency (usec)', Formatter.standard),
- ('Max Latency (usec)', Formatter.standard)
- ]
-
- single_run_header = [
- ('L2 Frame Size', Formatter.standard),
- ('Drop Rate', Formatter.suffix('%')),
- ('Avg Latency (usec)', Formatter.standard),
- ('Min Latency (usec)', Formatter.standard),
- ('Max Latency (usec)', Formatter.standard)
- ]
-
- config_header = [
- ('Direction', Formatter.standard),
- ('Requested TX Rate (bps)', Formatter.bits),
- ('Actual TX Rate (bps)', Formatter.bits),
- ('RX Rate (bps)', Formatter.bits),
- ('Requested TX Rate (pps)', Formatter.suffix(' pps')),
- ('Actual TX Rate (pps)', Formatter.suffix(' pps')),
- ('RX Rate (pps)', Formatter.suffix(' pps'))
- ]
-
direction_keys = ['direction-forward', 'direction-reverse', 'direction-total']
direction_names = ['Forward', 'Reverse', 'Total']
@@ -259,6 +230,47 @@ class NFVBenchSummarizer(Summarizer):
self.record_header = None
self.record_data = None
self.sender = sender
+
+ self.ndr_pdr_header = [
+ ('-', Formatter.fixed),
+ ('L2 Frame Size', Formatter.standard),
+ ('Rate (fwd+rev)', Formatter.bits),
+ ('Rate (fwd+rev)', Formatter.suffix(' pps')),
+ ('Avg Drop Rate', Formatter.suffix('%')),
+ ('Avg Latency (usec)', Formatter.standard),
+ ('Min Latency (usec)', Formatter.standard),
+ ('Max Latency (usec)', Formatter.standard)
+ ]
+
+ self.single_run_header = [
+ ('L2 Frame Size', Formatter.standard),
+ ('Drop Rate', Formatter.suffix('%')),
+ ('Avg Latency (usec)', Formatter.standard),
+ ('Min Latency (usec)', Formatter.standard),
+ ('Max Latency (usec)', Formatter.standard)
+ ]
+
+ self.config_header = [
+ ('Direction', Formatter.standard),
+ ('Requested TX Rate (bps)', Formatter.bits),
+ ('Actual TX Rate (bps)', Formatter.bits),
+ ('RX Rate (bps)', Formatter.bits),
+ ('Requested TX Rate (pps)', Formatter.suffix(' pps')),
+ ('Actual TX Rate (pps)', Formatter.suffix(' pps')),
+ ('RX Rate (pps)', Formatter.suffix(' pps'))
+ ]
+
+ # add percentiles headers if hdrh enabled
+ if not self.config.disable_hdrh:
+ for percentile in self.config.lat_percentiles:
+ # 'append' expects a single parameter => double parentheses
+ self.ndr_pdr_header.append((str(percentile) + ' %ile lat.', Formatter.standard))
+ self.single_run_header.append((str(percentile) + ' %ile lat.', Formatter.standard))
+
+ if self.config.periodic_gratuitous_arp:
+ self.direction_keys.insert(2, 'garp-direction-total')
+ self.direction_names.insert(2, 'Gratuitous ARP')
+
# if sender is available initialize record
if self.sender:
self.__record_init()
@@ -297,7 +309,7 @@ class NFVBenchSummarizer(Summarizer):
if network_benchmark['versions']:
self._put('Versions:')
with self._create_block():
- for component, version in network_benchmark['versions'].iteritems():
+ for component, version in list(network_benchmark['versions'].items()):
self._put(component + ':', version)
if self.config['ndr_run'] or self.config['pdr_run']:
@@ -308,7 +320,7 @@ class NFVBenchSummarizer(Summarizer):
if self.config['pdr_run']:
self._put('PDR:', self.config['measurement']['PDR'])
self._put('Service chain:')
- for result in network_benchmark['service_chain'].iteritems():
+ for result in list(network_benchmark['service_chain'].items()):
with self._create_block():
self.__chain_summarize(*result)
@@ -325,13 +337,13 @@ class NFVBenchSummarizer(Summarizer):
self._put('Bidirectional:', traffic_benchmark['bidirectional'])
self._put('Flow count:', traffic_benchmark['flow_count'])
self._put('Service chains count:', traffic_benchmark['service_chain_count'])
- self._put('Compute nodes:', traffic_benchmark['compute_nodes'].keys())
+ self._put('Compute nodes:', list(traffic_benchmark['compute_nodes'].keys()))
self.__record_header_put('profile', traffic_benchmark['profile'])
self.__record_header_put('bidirectional', traffic_benchmark['bidirectional'])
self.__record_header_put('flow_count', traffic_benchmark['flow_count'])
self.__record_header_put('sc_count', traffic_benchmark['service_chain_count'])
- self.__record_header_put('compute_nodes', traffic_benchmark['compute_nodes'].keys())
+ self.__record_header_put('compute_nodes', list(traffic_benchmark['compute_nodes'].keys()))
with self._create_block(False):
self._put()
if not self.config['no_traffic']:
@@ -345,7 +357,7 @@ class NFVBenchSummarizer(Summarizer):
except KeyError:
pass
- for entry in traffic_benchmark['result'].iteritems():
+ for entry in list(traffic_benchmark['result'].items()):
if 'warning' in entry:
continue
self.__chain_analysis_summarize(*entry)
@@ -391,10 +403,11 @@ class NFVBenchSummarizer(Summarizer):
summary_table = Table(self.ndr_pdr_header)
if self.config['ndr_run']:
- for frame_size, analysis in traffic_result.iteritems():
+ for frame_size, analysis in list(traffic_result.items()):
if frame_size == 'warning':
continue
- summary_table.add_row([
+
+ row_data = [
'NDR',
frame_size,
analysis['ndr']['rate_bps'],
@@ -403,21 +416,34 @@ class NFVBenchSummarizer(Summarizer):
analysis['ndr']['stats']['overall']['avg_delay_usec'],
analysis['ndr']['stats']['overall']['min_delay_usec'],
analysis['ndr']['stats']['overall']['max_delay_usec']
- ])
- self.__record_data_put(frame_size, {'ndr': {
+ ]
+ if not self.config.disable_hdrh:
+ self.extract_hdrh_percentiles(
+ analysis['ndr']['stats']['overall']['lat_percentile'], row_data)
+ summary_table.add_row(row_data)
+
+ ndr_data = {
'type': 'NDR',
'rate_bps': analysis['ndr']['rate_bps'],
'rate_pps': analysis['ndr']['rate_pps'],
+ 'offered_tx_rate_bps': analysis['ndr']['stats']['offered_tx_rate_bps'],
+ 'theoretical_tx_rate_pps': analysis['ndr']['stats']['theoretical_tx_rate_pps'],
+ 'theoretical_tx_rate_bps': analysis['ndr']['stats']['theoretical_tx_rate_bps'],
'drop_percentage': analysis['ndr']['stats']['overall']['drop_percentage'],
'avg_delay_usec': analysis['ndr']['stats']['overall']['avg_delay_usec'],
'min_delay_usec': analysis['ndr']['stats']['overall']['min_delay_usec'],
'max_delay_usec': analysis['ndr']['stats']['overall']['max_delay_usec']
- }})
+ }
+ if not self.config.disable_hdrh:
+ self.extract_hdrh_percentiles(
+ analysis['ndr']['stats']['overall']['lat_percentile'], ndr_data, True)
+ self.__record_data_put(frame_size, {'ndr': ndr_data})
if self.config['pdr_run']:
- for frame_size, analysis in traffic_result.iteritems():
+ for frame_size, analysis in list(traffic_result.items()):
if frame_size == 'warning':
continue
- summary_table.add_row([
+
+ row_data = [
'PDR',
frame_size,
analysis['pdr']['rate_bps'],
@@ -426,34 +452,73 @@ class NFVBenchSummarizer(Summarizer):
analysis['pdr']['stats']['overall']['avg_delay_usec'],
analysis['pdr']['stats']['overall']['min_delay_usec'],
analysis['pdr']['stats']['overall']['max_delay_usec']
- ])
- self.__record_data_put(frame_size, {'pdr': {
+ ]
+ if not self.config.disable_hdrh:
+ self.extract_hdrh_percentiles(
+ analysis['pdr']['stats']['overall']['lat_percentile'], row_data)
+ summary_table.add_row(row_data)
+
+ pdr_data = {
'type': 'PDR',
'rate_bps': analysis['pdr']['rate_bps'],
'rate_pps': analysis['pdr']['rate_pps'],
+ 'offered_tx_rate_bps': analysis['pdr']['stats']['offered_tx_rate_bps'],
+ 'theoretical_tx_rate_pps': analysis['pdr']['stats']['theoretical_tx_rate_pps'],
+ 'theoretical_tx_rate_bps': analysis['pdr']['stats']['theoretical_tx_rate_bps'],
'drop_percentage': analysis['pdr']['stats']['overall']['drop_percentage'],
'avg_delay_usec': analysis['pdr']['stats']['overall']['avg_delay_usec'],
'min_delay_usec': analysis['pdr']['stats']['overall']['min_delay_usec'],
'max_delay_usec': analysis['pdr']['stats']['overall']['max_delay_usec']
- }})
+ }
+ if not self.config.disable_hdrh:
+ self.extract_hdrh_percentiles(
+ analysis['pdr']['stats']['overall']['lat_percentile'], pdr_data, True)
+ self.__record_data_put(frame_size, {'pdr': pdr_data})
if self.config['single_run']:
- for frame_size, analysis in traffic_result.iteritems():
- summary_table.add_row([
+ for frame_size, analysis in list(traffic_result.items()):
+ row_data = [
frame_size,
analysis['stats']['overall']['drop_rate_percent'],
analysis['stats']['overall']['rx']['avg_delay_usec'],
analysis['stats']['overall']['rx']['min_delay_usec'],
analysis['stats']['overall']['rx']['max_delay_usec']
- ])
- self.__record_data_put(frame_size, {'single_run': {
+ ]
+ if not self.config.disable_hdrh:
+ self.extract_hdrh_percentiles(
+ analysis['stats']['overall']['rx']['lat_percentile'], row_data)
+ summary_table.add_row(row_data)
+
+ single_run_data = {
'type': 'single_run',
+ 'offered_tx_rate_bps': analysis['stats']['offered_tx_rate_bps'],
+ 'theoretical_tx_rate_pps': analysis['stats']['theoretical_tx_rate_pps'],
+ 'theoretical_tx_rate_bps': analysis['stats']['theoretical_tx_rate_bps'],
'drop_rate_percent': analysis['stats']['overall']['drop_rate_percent'],
'avg_delay_usec': analysis['stats']['overall']['rx']['avg_delay_usec'],
'min_delay_usec': analysis['stats']['overall']['rx']['min_delay_usec'],
'max_delay_usec': analysis['stats']['overall']['rx']['max_delay_usec']
- }})
+ }
+ if not self.config.disable_hdrh:
+ self.extract_hdrh_percentiles(
+ analysis['stats']['overall']['rx']['lat_percentile'], single_run_data, True)
+ self.__record_data_put(frame_size, {'single_run': single_run_data})
return summary_table
+ def extract_hdrh_percentiles(self, lat_percentile, data, add_key=False):
+ if add_key:
+ data['lat_percentile'] = {}
+ for percentile in self.config.lat_percentiles:
+ if add_key:
+ try:
+ data['lat_percentile_' + str(percentile)] = lat_percentile[percentile]
+ except TypeError:
+ data['lat_percentile_' + str(percentile)] = "n/a"
+ else:
+ try:
+ data.append(lat_percentile[percentile])
+ except TypeError:
+ data.append("n/a")
+
def __get_config_table(self, run_config, frame_size):
config_table = Table(self.config_header)
for key, name in zip(self.direction_keys, self.direction_names):
@@ -485,11 +550,11 @@ class NFVBenchSummarizer(Summarizer):
chain_stats: {
'interfaces': ['Port0', 'drop %'', 'vhost0', 'Port1'],
'chains': {
- 0: {'packets': [2000054, '-0.023%', 1999996, 1999996],
+ '0': {'packets': [2000054, '-0.023%', 1999996, 1999996],
'lat_min_usec': 10,
'lat_max_usec': 187,
'lat_avg_usec': 45},
- 1: {...},
+ '1': {...},
'total': {...}
}
}
@@ -498,21 +563,43 @@ class NFVBenchSummarizer(Summarizer):
_annotate_chain_stats(chains)
header = [('Chain', Formatter.standard)] + \
[(ifname, Formatter.standard) for ifname in chain_stats['interfaces']]
- # add latency columns if available Avg, Min, Max
+ # add latency columns if available Avg, Min, Max and percentiles
lat_keys = []
lat_map = {'lat_avg_usec': 'Avg lat.',
'lat_min_usec': 'Min lat.',
'lat_max_usec': 'Max lat.'}
- if 'lat_avg_usec' in chains[0]:
+ if 'lat_avg_usec' in chains['0']:
lat_keys = ['lat_avg_usec', 'lat_min_usec', 'lat_max_usec']
- for key in lat_keys:
- header.append((lat_map[key], Formatter.standard))
+
+ if not self.config.disable_hdrh:
+ lat_keys.append('lat_percentile')
+ for percentile in self.config.lat_percentiles:
+ lat_map['lat_' + str(percentile) + '_percentile'] = \
+ str(percentile) + ' %ile lat.'
+
+ for lat_value in lat_map.values():
+ # 'append' expects a single parameter => double parentheses
+ header.append((lat_value, Formatter.standard))
table = Table(header)
- for chain in sorted(chains.keys()):
+ for chain in sorted(list(chains.keys()), key=str):
row = [chain] + chains[chain]['packets']
for lat_key in lat_keys:
- row.append('{:,} usec'.format(chains[chain][lat_key]))
+
+ if lat_key != 'lat_percentile':
+ if chains[chain].get(lat_key, None):
+ row.append(Formatter.standard(chains[chain][lat_key]))
+ else:
+ row.append('n/a')
+ else:
+ if not self.config.disable_hdrh:
+ if chains[chain].get(lat_key, None):
+ for percentile in chains[chain][lat_key]:
+ row.append(Formatter.standard(
+ chains[chain][lat_key][percentile]))
+ else:
+ for _ in self.config.lat_percentiles:
+ row.append('n/a')
table.add_row(row)
return table
@@ -546,9 +633,9 @@ class NFVBenchSummarizer(Summarizer):
run_specific_data['pdr'] = data['pdr']
run_specific_data['pdr']['drop_limit'] = self.config['measurement']['PDR']
del data['pdr']
- for key in run_specific_data:
+ for data_value in run_specific_data.values():
data_to_send = data.copy()
- data_to_send.update(run_specific_data[key])
+ data_to_send.update(data_value)
self.sender.record_send(data_to_send)
self.__record_init()
diff --git a/nfvbench/traffic_client.py b/nfvbench/traffic_client.py
index ec885f8..47af265 100755
--- a/nfvbench/traffic_client.py
+++ b/nfvbench/traffic_client.py
@@ -13,45 +13,45 @@
# under the License.
"""Interface to the traffic generator clients including NDR/PDR binary search."""
-
-from datetime import datetime
import socket
import struct
import time
+import sys
from attrdict import AttrDict
import bitmath
+from hdrh.histogram import HdrHistogram
from netaddr import IPNetwork
# pylint: disable=import-error
from trex.stl.api import Ether
from trex.stl.api import STLError
from trex.stl.api import UDP
+# pylint: disable=wrong-import-order
+from scapy.contrib.mpls import MPLS # flake8: noqa
+# pylint: enable=wrong-import-order
# pylint: enable=import-error
-from log import LOG
-from packet_stats import InterfaceStats
-from packet_stats import PacketPathStats
-from stats_collector import IntervalCollector
-from stats_collector import IterationCollector
-import traffic_gen.traffic_utils as utils
-from utils import cast_integer
-
+from .log import LOG
+from .packet_stats import InterfaceStats
+from .packet_stats import PacketPathStats
+from .stats_collector import IntervalCollector
+from .stats_collector import IterationCollector
+from .traffic_gen import traffic_utils as utils
+from .utils import cast_integer, find_max_size, find_tuples_equal_to_lcm_value, get_divisors, lcm
class TrafficClientException(Exception):
"""Generic traffic client exception."""
- pass
-
-
class TrafficRunner(object):
"""Serialize various steps required to run traffic."""
- def __init__(self, client, duration_sec, interval_sec=0):
+ def __init__(self, client, duration_sec, interval_sec=0, service_mode=False):
"""Create a traffic runner."""
self.client = client
self.start_time = None
self.duration_sec = duration_sec
self.interval_sec = interval_sec
+ self.service_mode = service_mode
def run(self):
"""Clear stats and instruct the traffic generator to start generating traffic."""
@@ -59,6 +59,13 @@ class TrafficRunner(object):
return None
LOG.info('Running traffic generator')
self.client.gen.clear_stats()
+ # Debug use only: the service_mode flag may have been set in
+ # the configuration, in order to enable the 'service' mode
+ # in the trex generator, before starting the traffic (run).
+ # From this point, a T-rex console (launched in readonly mode) would
+ # then be able to capture the transmitted and/or received traffic.
+ self.client.gen.set_service_mode(enabled=self.service_mode)
+ LOG.info('Service mode is %sabled', 'en' if self.service_mode else 'dis')
self.client.gen.start_traffic()
self.start_time = time.time()
return self.poll_stats()
@@ -112,6 +119,8 @@ class IpBlock(object):
def __init__(self, base_ip, step_ip, count_ip):
"""Create an IP block."""
self.base_ip_int = Device.ip_to_int(base_ip)
+ if step_ip == 'random':
+ step_ip = '0.0.0.1'
self.step = Device.ip_to_int(step_ip)
self.max_available = count_ip
self.next_free = 0
@@ -122,8 +131,15 @@ class IpBlock(object):
raise IndexError('Index out of bounds: %d (max=%d)' % (index, self.max_available))
return Device.int_to_ip(self.base_ip_int + index * self.step)
+ def get_ip_from_chain_first_ip(self, first_ip, index=0):
+ """Return the IP address at given index starting from chain first ip."""
+ if index < 0 or index >= self.max_available:
+ raise IndexError('Index out of bounds: %d (max=%d)' % (index, self.max_available))
+ return Device.int_to_ip(first_ip + index * self.step)
+
def reserve_ip_range(self, count):
- """Reserve a range of count consecutive IP addresses spaced by step."""
+ """Reserve a range of count consecutive IP addresses spaced by step.
+ """
if self.next_free + count > self.max_available:
raise IndexError('No more IP addresses next free=%d max_available=%d requested=%d' %
(self.next_free,
@@ -139,6 +155,27 @@ class IpBlock(object):
self.next_free = 0
+class UdpPorts(object):
+
+ def __init__(self, src_min, src_max, dst_min, dst_max, udp_src_size, udp_dst_size, step):
+
+ self.src_min = int(src_min)
+ self.src_max = int(src_max)
+ self.dst_min = int(dst_min)
+ self.dst_max = int(dst_max)
+ self.udp_src_size = udp_src_size
+ self.udp_dst_size = udp_dst_size
+ self.step = step
+
+ def get_src_max(self, index=0):
+ """Return the UDP src port at given index."""
+ return int(self.src_min) + index * int(self.step)
+
+ def get_dst_max(self, index=0):
+ """Return the UDP dst port at given index."""
+ return int(self.dst_min) + index * int(self.step)
+
+
class Device(object):
"""Represent a port device and all information associated to it.
@@ -150,12 +187,19 @@ class Device(object):
"""Create a new device for a given port."""
self.generator_config = generator_config
self.chain_count = generator_config.service_chain_count
- self.flow_count = generator_config.flow_count / 2
+ if generator_config.bidirectional:
+ self.flow_count = generator_config.flow_count / 2
+ else:
+ self.flow_count = generator_config.flow_count
+
self.port = port
self.switch_port = generator_config.interfaces[port].get('switch_port', None)
self.vtep_vlan = None
self.vtep_src_mac = None
self.vxlan = False
+ self.mpls = False
+ self.inner_labels = None
+ self.outer_labels = None
self.pci = generator_config.interfaces[port].pci
self.mac = None
self.dest_macs = None
@@ -168,10 +212,50 @@ class Device(object):
self.vnis = None
self.vlans = None
self.ip_addrs = generator_config.ip_addrs[port]
- subnet = IPNetwork(self.ip_addrs)
- self.ip = subnet.ip.format()
+ self.ip_src_static = generator_config.ip_src_static
self.ip_addrs_step = generator_config.ip_addrs_step
- self.ip_block = IpBlock(self.ip, self.ip_addrs_step, self.flow_count)
+ if self.ip_addrs_step == 'random':
+ # Set step to 1 to calculate the IP range size (see check_range_size below)
+ step = '0.0.0.1'
+ else:
+ step = self.ip_addrs_step
+ self.ip_size = self.check_range_size(IPNetwork(self.ip_addrs).size, Device.ip_to_int(step))
+ self.ip = str(IPNetwork(self.ip_addrs).network)
+ ip_addrs_left = generator_config.ip_addrs[0]
+ ip_addrs_right = generator_config.ip_addrs[1]
+ self.ip_addrs_size = {
+ 'left': self.check_range_size(IPNetwork(ip_addrs_left).size, Device.ip_to_int(step)),
+ 'right': self.check_range_size(IPNetwork(ip_addrs_right).size, Device.ip_to_int(step))}
+ udp_src_port = generator_config.gen_config.udp_src_port
+ if udp_src_port is None:
+ udp_src_port = 53
+ udp_dst_port = generator_config.gen_config.udp_dst_port
+ if udp_dst_port is None:
+ udp_dst_port = 53
+ src_max, src_min = self.define_udp_range(udp_src_port, 'udp_src_port')
+ dst_max, dst_min = self.define_udp_range(udp_dst_port, 'udp_dst_port')
+ if generator_config.gen_config.udp_port_step == 'random':
+ # Set step to 1 to calculate the UDP range size
+ udp_step = 1
+ else:
+ udp_step = int(generator_config.gen_config.udp_port_step)
+ udp_src_size = self.check_range_size(int(src_max) - int(src_min) + 1, udp_step)
+ udp_dst_size = self.check_range_size(int(dst_max) - int(dst_min) + 1, udp_step)
+ lcm_port = lcm(udp_src_size, udp_dst_size)
+ if self.ip_src_static is True:
+ lcm_ip = lcm(1, min(self.ip_addrs_size['left'], self.ip_addrs_size['right']))
+ else:
+ lcm_ip = lcm(self.ip_addrs_size['left'], self.ip_addrs_size['right'])
+ flow_max = lcm(lcm_port, lcm_ip)
+ if self.flow_count > flow_max:
+ raise TrafficClientException('Trying to set unachievable traffic (%d > %d)' %
+ (self.flow_count, flow_max))
+
+ self.udp_ports = UdpPorts(src_min, src_max, dst_min, dst_max, udp_src_size, udp_dst_size,
+ generator_config.gen_config.udp_port_step)
+
+ self.ip_block = IpBlock(self.ip, step, self.ip_size)
+
self.gw_ip_block = IpBlock(generator_config.gateway_ips[port],
generator_config.gateway_ip_addrs_step,
self.chain_count)
@@ -179,8 +263,146 @@ class Device(object):
self.tg_gw_ip_block = IpBlock(self.tg_gateway_ip_addrs,
generator_config.tg_gateway_ip_addrs_step,
self.chain_count)
- self.udp_src_port = generator_config.udp_src_port
- self.udp_dst_port = generator_config.udp_dst_port
+
+ def limit_ip_udp_ranges(self, peer_ip_size, cur_chain_flow_count):
+ # init to min value in case of no matching values found with lcm calculation
+ new_src_ip_size = 1
+ new_peer_ip_size = 1
+ new_src_udp_size = 1
+ new_dst_udp_size = 1
+
+ if self.ip_src_static is True:
+ src_ip_size = 1
+ else:
+ src_ip_size = self.ip_size
+ ip_src_divisors = list(get_divisors(src_ip_size))
+ ip_dst_divisors = list(get_divisors(peer_ip_size))
+ udp_src_divisors = list(get_divisors(self.udp_ports.udp_src_size))
+ udp_dst_divisors = list(get_divisors(self.udp_ports.udp_dst_size))
+ fc = int(cur_chain_flow_count)
+ tuples_ip = list(find_tuples_equal_to_lcm_value(ip_src_divisors, ip_dst_divisors, fc))
+ tuples_udp = list(find_tuples_equal_to_lcm_value(udp_src_divisors, udp_dst_divisors, fc))
+
+ if tuples_ip:
+ new_src_ip_size = tuples_ip[-1][0]
+ new_peer_ip_size = tuples_ip[-1][1]
+
+ if tuples_udp:
+ new_src_udp_size = tuples_udp[-1][0]
+ new_dst_udp_size = tuples_udp[-1][1]
+
+ tuples_src = []
+ tuples_dst = []
+ if not tuples_ip and not tuples_udp:
+ # in case of not divisors in common matching LCM value (i.e. requested flow count)
+ # try to find an accurate UDP range to fit requested flow count
+ udp_src_int = range(self.udp_ports.src_min, self.udp_ports.src_max)
+ udp_dst_int = range(self.udp_ports.dst_min, self.udp_ports.dst_max)
+ tuples_src = list(find_tuples_equal_to_lcm_value(ip_src_divisors, udp_src_int, fc))
+ tuples_dst = list(find_tuples_equal_to_lcm_value(ip_dst_divisors, udp_dst_int, fc))
+
+ if not tuples_src and not tuples_dst:
+ # iterate IP and UDP ranges to find a tuple that match flow count values
+ src_ip_range = range(1,src_ip_size)
+ dst_ip_range = range(1, peer_ip_size)
+ tuples_src = list(find_tuples_equal_to_lcm_value(src_ip_range, udp_src_int, fc))
+ tuples_dst = list(find_tuples_equal_to_lcm_value(dst_ip_range, udp_dst_int, fc))
+
+ if tuples_src or tuples_dst:
+ if tuples_src:
+ new_src_ip_size = tuples_src[-1][0]
+ new_src_udp_size = tuples_src[-1][1]
+ if tuples_dst:
+ new_peer_ip_size = tuples_dst[-1][0]
+ new_dst_udp_size = tuples_dst[-1][1]
+ else:
+ if not tuples_ip:
+ if src_ip_size != 1:
+ if src_ip_size > fc:
+ new_src_ip_size = fc
+ else:
+ new_src_ip_size = find_max_size(src_ip_size, tuples_udp, fc)
+ if peer_ip_size != 1:
+ if peer_ip_size > fc:
+ new_peer_ip_size = fc
+ else:
+ new_peer_ip_size = find_max_size(peer_ip_size, tuples_udp, fc)
+
+ if not tuples_udp:
+ if self.udp_ports.udp_src_size != 1:
+ if self.udp_ports.udp_src_size > fc:
+ new_src_udp_size = fc
+ else:
+ new_src_udp_size = find_max_size(self.udp_ports.udp_src_size,
+ tuples_ip, fc)
+ if self.udp_ports.udp_dst_size != 1:
+ if self.udp_ports.udp_dst_size > fc:
+ new_dst_udp_size = fc
+ else:
+ new_dst_udp_size = find_max_size(self.udp_ports.udp_dst_size,
+ tuples_ip, fc)
+ max_possible_flows = lcm(lcm(new_src_ip_size, new_peer_ip_size),
+ lcm(new_src_udp_size, new_dst_udp_size))
+
+ LOG.debug("IP dst size: %d", new_peer_ip_size)
+ LOG.debug("LCM IP: %d", lcm(new_src_ip_size, new_peer_ip_size))
+ LOG.debug("LCM UDP: %d", lcm(new_src_udp_size, new_dst_udp_size))
+ LOG.debug("Global LCM: %d", max_possible_flows)
+ LOG.debug("IP src size: %d, IP dst size: %d, UDP src size: %d, UDP dst size: %d",
+ new_src_ip_size, new_peer_ip_size, self.udp_ports.udp_src_size,
+ self.udp_ports.udp_dst_size)
+ if not max_possible_flows == cur_chain_flow_count:
+ if (self.ip_addrs_step != '0.0.0.1' or self.udp_ports.step != '1') and not (
+ self.ip_addrs_step == 'random' and self.udp_ports.step == 'random'):
+ LOG.warning("Current values of ip_addrs_step and/or udp_port_step properties "
+ "do not allow to control an accurate flow count. "
+ "Values will be overridden as follows:")
+ if self.ip_addrs_step != '0.0.0.1':
+ LOG.info("ip_addrs_step='0.0.0.1' (previous value: ip_addrs_step='%s')",
+ self.ip_addrs_step)
+ self.ip_addrs_step = '0.0.0.1'
+
+ if self.udp_ports.step != '1':
+ LOG.info("udp_port_step='1' (previous value: udp_port_step='%s')",
+ self.udp_ports.step)
+ self.udp_ports.step = '1'
+ # override config for not logging random step warning message in trex_gen.py
+ self.generator_config.gen_config.udp_port_step = self.udp_ports.step
+ else:
+ LOG.error("Current values of ip_addrs_step and udp_port_step properties "
+ "do not allow to control an accurate flow count.")
+ else:
+ src_ip_size = new_src_ip_size
+ peer_ip_size = new_peer_ip_size
+ self.udp_ports.udp_src_size = new_src_udp_size
+ self.udp_ports.udp_dst_size = new_dst_udp_size
+ return src_ip_size, peer_ip_size
+
+ @staticmethod
+ def define_udp_range(udp_port, property_name):
+ if isinstance(udp_port, int):
+ min = udp_port
+ max = min
+ elif isinstance(udp_port, tuple):
+ min = udp_port[0]
+ max = udp_port[1]
+ else:
+ raise TrafficClientException('Invalid %s property value (53 or [\'53\',\'1024\'])'
+ % property_name)
+ return max, min
+
+
+ @staticmethod
+ def check_range_size(range_size, step):
+ """Check and set the available IPs or UDP ports, considering the step."""
+ try:
+ if range_size % step == 0:
+ value = range_size // step
+ else:
+ value = range_size // step + 1
+ return value
+ except ZeroDivisionError:
+ raise ZeroDivisionError("step can't be zero !") from ZeroDivisionError
def set_mac(self, mac):
"""Set the local MAC for this port device."""
@@ -199,7 +421,7 @@ class Device(object):
- VM macs discovered using openstack API
- dest MACs provisioned in config file
"""
- self.vtep_dst_mac = map(str, dest_macs)
+ self.vtep_dst_mac = list(map(str, dest_macs))
def set_dest_macs(self, dest_macs):
"""Set the list of dest MACs indexed by the chain id.
@@ -208,7 +430,7 @@ class Device(object):
- VM macs discovered using openstack API
- dest MACs provisioned in config file
"""
- self.dest_macs = map(str, dest_macs)
+ self.dest_macs = list(map(str, dest_macs))
def get_dest_macs(self):
"""Get the list of dest macs for this device.
@@ -239,10 +461,25 @@ class Device(object):
LOG.info("Port %d: src_vtep %s, dst_vtep %s", self.port,
self.vtep_src_ip, self.vtep_dst_ip)
+ def set_mpls_peers(self, src_ip, dst_ip):
+ self.mpls = True
+ self.vtep_dst_ip = dst_ip
+ self.vtep_src_ip = src_ip
+ LOG.info("Port %d: src_mpls_vtep %s, mpls_peer_ip %s", self.port,
+ self.vtep_src_ip, self.vtep_dst_ip)
+
def set_vxlans(self, vnis):
self.vnis = vnis
LOG.info("Port %d: VNIs %s", self.port, self.vnis)
+ def set_mpls_inner_labels(self, labels):
+ self.inner_labels = labels
+ LOG.info("Port %d: MPLS Inner Labels %s", self.port, self.inner_labels)
+
+ def set_mpls_outer_labels(self, labels):
+ self.outer_labels = labels
+ LOG.info("Port %d: MPLS Outer Labels %s", self.port, self.outer_labels)
+
def set_gw_ip(self, gateway_ip):
self.gw_ip_block = IpBlock(gateway_ip,
self.generator_config.gateway_ip_addrs_step,
@@ -264,16 +501,44 @@ class Device(object):
# calculated as (total_flows + chain_count - 1) / chain_count
# - the first chain will have the remainder
# example 11 flows and 3 chains => 3, 4, 4
- flows_per_chain = (self.flow_count + self.chain_count - 1) / self.chain_count
- cur_chain_flow_count = self.flow_count - flows_per_chain * (self.chain_count - 1)
+ flows_per_chain = int((self.flow_count + self.chain_count - 1) / self.chain_count)
+ cur_chain_flow_count = int(self.flow_count - flows_per_chain * (self.chain_count - 1))
+
peer = self.get_peer_device()
self.ip_block.reset_reservation()
peer.ip_block.reset_reservation()
dest_macs = self.get_dest_macs()
- for chain_idx in xrange(self.chain_count):
- src_ip_first, src_ip_last = self.ip_block.reserve_ip_range(cur_chain_flow_count)
- dst_ip_first, dst_ip_last = peer.ip_block.reserve_ip_range(cur_chain_flow_count)
+ # limit ranges of UDP ports and IP to avoid overflow of the number of flows
+ peer_size = peer.ip_size // self.chain_count
+
+ for chain_idx in range(self.chain_count):
+ src_ip_size, peer_ip_size = self.limit_ip_udp_ranges(peer_size, cur_chain_flow_count)
+
+ src_ip_first, src_ip_last = self.ip_block.reserve_ip_range \
+ (src_ip_size)
+ dst_ip_first, dst_ip_last = peer.ip_block.reserve_ip_range \
+ (peer_ip_size)
+
+ if self.ip_addrs_step != 'random':
+ src_ip_last = self.ip_block.get_ip_from_chain_first_ip(
+ Device.ip_to_int(src_ip_first), src_ip_size - 1)
+ dst_ip_last = peer.ip_block.get_ip_from_chain_first_ip(
+ Device.ip_to_int(dst_ip_first), peer_ip_size - 1)
+ if self.udp_ports.step != 'random':
+ self.udp_ports.src_max = self.udp_ports.get_src_max(self.udp_ports.udp_src_size - 1)
+ self.udp_ports.dst_max = self.udp_ports.get_dst_max(self.udp_ports.udp_dst_size - 1)
+ if self.ip_src_static:
+ src_ip_last = src_ip_first
+
+ LOG.info("Port %d, chain %d: IP src range [%s,%s]", self.port, chain_idx,
+ src_ip_first, src_ip_last)
+ LOG.info("Port %d, chain %d: IP dst range [%s,%s]", self.port, chain_idx,
+ dst_ip_first, dst_ip_last)
+ LOG.info("Port %d, chain %d: UDP src range [%s,%s]", self.port, chain_idx,
+ self.udp_ports.src_min, self.udp_ports.src_max)
+ LOG.info("Port %d, chain %d: UDP dst range [%s,%s]", self.port, chain_idx,
+ self.udp_ports.dst_min, self.udp_ports.dst_max)
configs.append({
'count': cur_chain_flow_count,
@@ -281,24 +546,34 @@ class Device(object):
'mac_dst': dest_macs[chain_idx],
'ip_src_addr': src_ip_first,
'ip_src_addr_max': src_ip_last,
- 'ip_src_count': cur_chain_flow_count,
+ 'ip_src_count': src_ip_size,
'ip_dst_addr': dst_ip_first,
'ip_dst_addr_max': dst_ip_last,
- 'ip_dst_count': cur_chain_flow_count,
+ 'ip_dst_count': peer_ip_size,
'ip_addrs_step': self.ip_addrs_step,
- 'udp_src_port': self.udp_src_port,
- 'udp_dst_port': self.udp_dst_port,
+ 'ip_src_static': self.ip_src_static,
+ 'udp_src_port': self.udp_ports.src_min,
+ 'udp_src_port_max': self.udp_ports.src_max,
+ 'udp_src_count': self.udp_ports.udp_src_size,
+ 'udp_dst_port': self.udp_ports.dst_min,
+ 'udp_dst_port_max': self.udp_ports.dst_max,
+ 'udp_dst_count': self.udp_ports.udp_dst_size,
+ 'udp_port_step': self.udp_ports.step,
'mac_discovery_gw': self.get_gw_ip(chain_idx),
'ip_src_tg_gw': self.tg_gw_ip_block.get_ip(chain_idx),
'ip_dst_tg_gw': peer.tg_gw_ip_block.get_ip(chain_idx),
'vlan_tag': self.vlans[chain_idx] if self.vlans else None,
'vxlan': self.vxlan,
'vtep_vlan': self.vtep_vlan if self.vtep_vlan else None,
- 'vtep_src_mac': self.mac if self.vxlan is True else None,
- 'vtep_dst_mac': self.vtep_dst_mac if self.vxlan is True else None,
+ 'vtep_src_mac': self.mac if (self.vxlan or self.mpls) else None,
+ 'vtep_dst_mac': self.vtep_dst_mac if (self.vxlan or self.mpls) else None,
'vtep_dst_ip': self.vtep_dst_ip if self.vxlan is True else None,
'vtep_src_ip': self.vtep_src_ip if self.vxlan is True else None,
- 'net_vni': self.vnis[chain_idx] if self.vxlan is True else None
+ 'net_vni': self.vnis[chain_idx] if self.vxlan is True else None,
+ 'mpls': self.mpls,
+ 'mpls_outer_label': self.outer_labels[chain_idx] if self.mpls is True else None,
+ 'mpls_inner_label': self.inner_labels[chain_idx] if self.mpls is True else None
+
})
# after first chain, fall back to the flow count for all other chains
cur_chain_flow_count = flows_per_chain
@@ -312,7 +587,7 @@ class Device(object):
@staticmethod
def int_to_ip(nvalue):
"""Convert an IP address from numeric to string."""
- return socket.inet_ntoa(struct.pack("!I", nvalue))
+ return socket.inet_ntoa(struct.pack("!I", int(nvalue)))
class GeneratorConfig(object):
@@ -340,14 +615,24 @@ class GeneratorConfig(object):
self.cores = config.cores
else:
self.cores = gen_config.get('cores', 1)
+ # let's report the value actually used in the end
+ config.cores_used = self.cores
self.mbuf_factor = config.mbuf_factor
+ self.mbuf_64 = config.mbuf_64
self.hdrh = not config.disable_hdrh
- if gen_config.intf_speed:
- # interface speed is overriden from config
- self.intf_speed = bitmath.parse_string(gen_config.intf_speed.replace('ps', '')).bits
+ if config.intf_speed:
+ # interface speed is overriden from the command line
+ self.intf_speed = config.intf_speed
+ elif gen_config.intf_speed:
+ # interface speed is overriden from the generator config
+ self.intf_speed = gen_config.intf_speed
else:
+ self.intf_speed = "auto"
+ if self.intf_speed in ("auto", "0"):
# interface speed is discovered/provided by the traffic generator
self.intf_speed = 0
+ else:
+ self.intf_speed = bitmath.parse_string(self.intf_speed.replace('ps', '')).bits
self.name = gen_config.name
self.zmq_pub_port = gen_config.get('zmq_pub_port', 4500)
self.zmq_rpc_port = gen_config.get('zmq_rpc_port', 4501)
@@ -356,13 +641,11 @@ class GeneratorConfig(object):
self.interfaces = gen_config.interfaces
if self.interfaces[0].port != 0 or self.interfaces[1].port != 1:
raise TrafficClientException('Invalid port order/id in generator_profile.interfaces')
- if hasattr(gen_config, 'platform'):
- self.platform = gen_config.platform
self.service_chain = config.service_chain
self.service_chain_count = config.service_chain_count
self.flow_count = config.flow_count
self.host_name = gen_config.host_name
-
+ self.bidirectional = config.traffic.bidirectional
self.tg_gateway_ip_addrs = gen_config.tg_gateway_ip_addrs
self.ip_addrs = gen_config.ip_addrs
self.ip_addrs_step = gen_config.ip_addrs_step or self.DEFAULT_SRC_DST_IP_STEP
@@ -370,8 +653,7 @@ class GeneratorConfig(object):
gen_config.tg_gateway_ip_addrs_step or self.DEFAULT_IP_STEP
self.gateway_ip_addrs_step = gen_config.gateway_ip_addrs_step or self.DEFAULT_IP_STEP
self.gateway_ips = gen_config.gateway_ip_addrs
- self.udp_src_port = gen_config.udp_src_port
- self.udp_dst_port = gen_config.udp_dst_port
+ self.ip_src_static = gen_config.ip_src_static
self.vteps = gen_config.get('vteps')
self.devices = [Device(port, self) for port in [0, 1]]
# This should normally always be [0, 1]
@@ -416,7 +698,7 @@ class GeneratorConfig(object):
raise TrafficClientException('Dest MAC list %s must have %d entries' %
(dest_macs, self.config.service_chain_count))
self.devices[port_index].set_vtep_dst_mac(dest_macs)
- LOG.info('Port %d: vtep dst MAC %s', port_index, set([str(mac) for mac in dest_macs]))
+ LOG.info('Port %d: vtep dst MAC %s', port_index, {str(mac) for mac in dest_macs})
def get_dest_macs(self):
"""Return the list of dest macs indexed by port."""
@@ -444,6 +726,28 @@ class GeneratorConfig(object):
(vxlans, self.config.service_chain_count))
self.devices[port_index].set_vxlans(vxlans)
+ def set_mpls_inner_labels(self, port_index, labels):
+ """Set the list of MPLS Labels to use indexed by the chain id on given port.
+
+ port_index: the port for which Labels must be set
+ Labels: a list of Labels lists indexed by chain id
+ """
+ if len(labels) != self.config.service_chain_count:
+ raise TrafficClientException('Inner MPLS list %s must have %d entries' %
+ (labels, self.config.service_chain_count))
+ self.devices[port_index].set_mpls_inner_labels(labels)
+
+ def set_mpls_outer_labels(self, port_index, labels):
+ """Set the list of MPLS Labels to use indexed by the chain id on given port.
+
+ port_index: the port for which Labels must be set
+ Labels: a list of Labels lists indexed by chain id
+ """
+ if len(labels) != self.config.service_chain_count:
+ raise TrafficClientException('Outer MPLS list %s must have %d entries' %
+ (labels, self.config.service_chain_count))
+ self.devices[port_index].set_mpls_outer_labels(labels)
+
def set_vtep_vlan(self, port_index, vlan):
"""Set the vtep vlan to use indexed by the chain id on given port.
port_index: the port for which VLAN must be set
@@ -453,6 +757,9 @@ class GeneratorConfig(object):
def set_vxlan_endpoints(self, port_index, src_ip, dst_ip):
self.devices[port_index].set_vxlan_endpoints(src_ip, dst_ip)
+ def set_mpls_peers(self, port_index, src_ip, dst_ip):
+ self.devices[port_index].set_mpls_peers(src_ip, dst_ip)
+
@staticmethod
def __match_generator_profile(traffic_generator, generator_profile):
gen_config = AttrDict(traffic_generator)
@@ -487,7 +794,8 @@ class TrafficClient(object):
self.notifier = notifier
self.interval_collector = None
self.iteration_collector = None
- self.runner = TrafficRunner(self, self.config.duration_sec, self.config.interval_sec)
+ self.runner = TrafficRunner(self, self.config.duration_sec, self.config.interval_sec,
+ self.config.service_mode)
self.config.frame_sizes = self._get_frame_sizes()
self.run_config = {
'l2frame_size': None,
@@ -507,10 +815,10 @@ class TrafficClient(object):
def _get_generator(self):
tool = self.tool.lower()
if tool == 'trex':
- from traffic_gen import trex_gen
+ from .traffic_gen import trex_gen
return trex_gen.TRex(self)
if tool == 'dummy':
- from traffic_gen import dummy
+ from .traffic_gen import dummy
return dummy.DummyTG(self)
raise TrafficClientException('Unsupported generator tool name:' + self.tool)
@@ -528,7 +836,7 @@ class TrafficClient(object):
if len(matching_profiles) > 1:
raise TrafficClientException('Multiple traffic profiles with name: ' +
traffic_profile_name)
- elif not matching_profiles:
+ if not matching_profiles:
raise TrafficClientException('Cannot find traffic profile: ' + traffic_profile_name)
return matching_profiles[0].l2frame_size
@@ -543,13 +851,17 @@ class TrafficClient(object):
# interface speed is overriden from config
if self.intf_speed != tg_if_speed:
# Warn the user if the speed in the config is different
- LOG.warning('Interface speed provided is different from actual speed (%d Gbps)',
- intf_speeds[0])
+ LOG.warning(
+ 'Interface speed provided (%g Gbps) is different from actual speed (%d Gbps)',
+ self.intf_speed / 1000000000.0, intf_speeds[0])
else:
# interface speed not provisioned by config
self.intf_speed = tg_if_speed
# also update the speed in the tg config
self.generator_config.intf_speed = tg_if_speed
+ # let's report detected and actually used interface speed
+ self.config.intf_speed_detected = tg_if_speed
+ self.config.intf_speed_used = self.intf_speed
# Save the traffic generator local MAC
for mac, device in zip(self.gen.get_macs(), self.generator_config.devices):
@@ -588,8 +900,8 @@ class TrafficClient(object):
self.gen.create_traffic('64', [rate_pps, rate_pps], bidirectional=True, latency=False,
e2e=True)
# ensures enough traffic is coming back
- retry_count = (self.config.check_traffic_time_sec +
- self.config.generic_poll_sec - 1) / self.config.generic_poll_sec
+ retry_count = int((self.config.check_traffic_time_sec +
+ self.config.generic_poll_sec - 1) / self.config.generic_poll_sec)
# we expect to see packets coming from 2 unique MAC per chain
# because there can be flooding in the case of shared net
@@ -605,9 +917,12 @@ class TrafficClient(object):
get_mac_id = lambda packet: packet['binary'][60:66]
elif self.config.vxlan:
get_mac_id = lambda packet: packet['binary'][56:62]
+ elif self.config.mpls:
+ get_mac_id = lambda packet: packet['binary'][24:30]
+ # mpls_transport_label = lambda packet: packet['binary'][14:18]
else:
get_mac_id = lambda packet: packet['binary'][6:12]
- for it in xrange(retry_count):
+ for it in range(retry_count):
self.gen.clear_stats()
self.gen.start_traffic()
self.gen.start_capture()
@@ -620,13 +935,20 @@ class TrafficClient(object):
self.gen.fetch_capture_packets()
self.gen.stop_capture()
for packet in self.gen.packet_list:
- mac_id = get_mac_id(packet)
+ mac_id = get_mac_id(packet).decode('latin-1')
src_mac = ':'.join(["%02x" % ord(x) for x in mac_id])
- if src_mac in mac_map and self.is_udp(packet):
- port, chain = mac_map[src_mac]
- LOG.info('Received packet from mac: %s (chain=%d, port=%d)',
- src_mac, chain, port)
- mac_map.pop(src_mac, None)
+ if self.config.mpls:
+ if src_mac in mac_map and self.is_mpls(packet):
+ port, chain = mac_map[src_mac]
+ LOG.info('Received mpls packet from mac: %s (chain=%d, port=%d)',
+ src_mac, chain, port)
+ mac_map.pop(src_mac, None)
+ else:
+ if src_mac in mac_map and self.is_udp(packet):
+ port, chain = mac_map[src_mac]
+ LOG.info('Received udp packet from mac: %s (chain=%d, port=%d)',
+ src_mac, chain, port)
+ mac_map.pop(src_mac, None)
if not mac_map:
LOG.info('End-to-end connectivity established')
@@ -643,12 +965,16 @@ class TrafficClient(object):
pkt = Ether(packet['binary'])
return UDP in pkt
+ def is_mpls(self, packet):
+ pkt = Ether(packet['binary'])
+ return MPLS in pkt
+
def ensure_arp_successful(self):
"""Resolve all IP using ARP and throw an exception in case of failure."""
dest_macs = self.gen.resolve_arp()
if dest_macs:
# all dest macs are discovered, saved them into the generator config
- if self.config.vxlan:
+ if self.config.vxlan or self.config.mpls:
self.generator_config.set_vtep_dest_macs(0, dest_macs[0])
self.generator_config.set_vtep_dest_macs(1, dest_macs[1])
else:
@@ -674,12 +1000,13 @@ class TrafficClient(object):
self.run_config['rates'][idx] = {'rate_pps': self.__convert_rates(rate)['rate_pps']}
self.gen.clear_streamblock()
- if not self.config.vxlan:
- self.gen.create_traffic(frame_size, self.run_config['rates'], bidirectional,
- latency=True)
- else:
- self.gen.create_traffic(frame_size, self.run_config['rates'], bidirectional,
- latency=False)
+
+ if self.config.no_latency_streams:
+ LOG.info("Latency streams are disabled")
+ # in service mode, we must disable flow stats (e2e=True)
+ self.gen.create_traffic(frame_size, self.run_config['rates'], bidirectional,
+ latency=not self.config.no_latency_streams,
+ e2e=self.runner.service_mode)
def _modify_load(self, load):
self.current_total_rate = {'rate_percent': str(load)}
@@ -736,31 +1063,37 @@ class TrafficClient(object):
def get_stats(self):
"""Collect final stats for previous run."""
- stats = self.gen.get_stats()
- retDict = {'total_tx_rate': stats['total_tx_rate']}
- for port in self.PORTS:
- retDict[port] = {'tx': {}, 'rx': {}}
+ stats = self.gen.get_stats(self.ifstats)
+ retDict = {'total_tx_rate': stats['total_tx_rate'],
+ 'offered_tx_rate_bps': stats['offered_tx_rate_bps'],
+ 'theoretical_tx_rate_bps': stats['theoretical_tx_rate_bps'],
+ 'theoretical_tx_rate_pps': stats['theoretical_tx_rate_pps']}
+
+ if self.config.periodic_gratuitous_arp:
+ retDict['garp_total_tx_rate'] = stats['garp_total_tx_rate']
tx_keys = ['total_pkts', 'total_pkt_bytes', 'pkt_rate', 'pkt_bit_rate']
rx_keys = tx_keys + ['dropped_pkts']
for port in self.PORTS:
+ port_stats = {'tx': {}, 'rx': {}}
for key in tx_keys:
- retDict[port]['tx'][key] = int(stats[port]['tx'][key])
+ port_stats['tx'][key] = int(stats[port]['tx'][key])
for key in rx_keys:
try:
- retDict[port]['rx'][key] = int(stats[port]['rx'][key])
+ port_stats['rx'][key] = int(stats[port]['rx'][key])
except ValueError:
- retDict[port]['rx'][key] = 0
- retDict[port]['rx']['avg_delay_usec'] = cast_integer(
+ port_stats['rx'][key] = 0
+ port_stats['rx']['avg_delay_usec'] = cast_integer(
stats[port]['rx']['avg_delay_usec'])
- retDict[port]['rx']['min_delay_usec'] = cast_integer(
+ port_stats['rx']['min_delay_usec'] = cast_integer(
stats[port]['rx']['min_delay_usec'])
- retDict[port]['rx']['max_delay_usec'] = cast_integer(
+ port_stats['rx']['max_delay_usec'] = cast_integer(
stats[port]['rx']['max_delay_usec'])
- retDict[port]['drop_rate_percent'] = self.__get_dropped_rate(retDict[port])
+ port_stats['drop_rate_percent'] = self.__get_dropped_rate(port_stats)
+ retDict[str(port)] = port_stats
- ports = sorted(retDict.keys())
+ ports = sorted(list(retDict.keys()), key=str)
if self.run_config['bidirectional']:
retDict['overall'] = {'tx': {}, 'rx': {}}
for key in tx_keys:
@@ -786,6 +1119,22 @@ class TrafficClient(object):
else:
retDict['overall'] = retDict[ports[0]]
retDict['overall']['drop_rate_percent'] = self.__get_dropped_rate(retDict['overall'])
+
+ if 'overall_hdrh' in stats:
+ retDict['overall']['hdrh'] = stats.get('overall_hdrh', None)
+ decoded_histogram = HdrHistogram.decode(retDict['overall']['hdrh'])
+ retDict['overall']['rx']['lat_percentile'] = {}
+ # override min max and avg from hdrh (only if histogram is valid)
+ if decoded_histogram.get_total_count() != 0:
+ retDict['overall']['rx']['min_delay_usec'] = decoded_histogram.get_min_value()
+ retDict['overall']['rx']['max_delay_usec'] = decoded_histogram.get_max_value()
+ retDict['overall']['rx']['avg_delay_usec'] = decoded_histogram.get_mean_value()
+ for percentile in self.config.lat_percentiles:
+ retDict['overall']['rx']['lat_percentile'][percentile] = \
+ decoded_histogram.get_value_at_percentile(percentile)
+ else:
+ for percentile in self.config.lat_percentiles:
+ retDict['overall']['rx']['lat_percentile'][percentile] = 'n/a'
return retDict
def __convert_rates(self, rate):
@@ -801,6 +1150,7 @@ class TrafficClient(object):
def __format_output_stats(self, stats):
for key in self.PORTS + ['overall']:
+ key = str(key)
interface = stats[key]
stats[key] = {
'tx_pkts': interface['tx']['total_pkts'],
@@ -812,10 +1162,26 @@ class TrafficClient(object):
'min_delay_usec': interface['rx']['min_delay_usec'],
}
+ if key == 'overall':
+ if 'hdrh' in interface:
+ stats[key]['hdrh'] = interface.get('hdrh', None)
+ decoded_histogram = HdrHistogram.decode(stats[key]['hdrh'])
+ stats[key]['lat_percentile'] = {}
+ # override min max and avg from hdrh (only if histogram is valid)
+ if decoded_histogram.get_total_count() != 0:
+ stats[key]['min_delay_usec'] = decoded_histogram.get_min_value()
+ stats[key]['max_delay_usec'] = decoded_histogram.get_max_value()
+ stats[key]['avg_delay_usec'] = decoded_histogram.get_mean_value()
+ for percentile in self.config.lat_percentiles:
+ stats[key]['lat_percentile'][percentile] = decoded_histogram.\
+ get_value_at_percentile(percentile)
+ else:
+ for percentile in self.config.lat_percentiles:
+ stats[key]['lat_percentile'][percentile] = 'n/a'
return stats
def __targets_found(self, rate, targets, results):
- for tag, target in targets.iteritems():
+ for tag, target in list(targets.items()):
LOG.info('Found %s (%s) load: %s', tag, target, rate)
self.__ndr_pdr_found(tag, rate)
results[tag]['timestamp_sec'] = time.time()
@@ -851,7 +1217,7 @@ class TrafficClient(object):
# Split target dicts based on the avg drop rate
left_targets = {}
right_targets = {}
- for tag, target in targets.iteritems():
+ for tag, target in list(targets.items()):
if stats['overall']['drop_rate_percent'] <= target:
# record the best possible rate found for this target
results[tag] = rates
@@ -897,6 +1263,17 @@ class TrafficClient(object):
"""
self._modify_load(rate)
+ # There used to be a inconsistency in case of interface speed override.
+ # The emulated 'intf_speed' value is unknown to the T-Rex generator which
+ # refers to the detected line rate for converting relative traffic loads.
+ # Therefore, we need to convert actual rates here, in terms of packets/s.
+
+ for idx, str_rate in enumerate(self.gen.rates):
+ if str_rate.endswith('%'):
+ float_rate = float(str_rate.replace('%', '').strip())
+ pps_rate = self.__convert_rates({'rate_percent': float_rate})['rate_pps']
+ self.gen.rates[idx] = str(pps_rate) + 'pps'
+
# poll interval stats and collect them
for stats in self.run_traffic():
self.interval_collector.add(stats)
@@ -920,25 +1297,32 @@ class TrafficClient(object):
LOG.info('Average drop rate: %f', stats['overall']['drop_rate_percent'])
return stats, current_traffic_config['direction-total']
- @staticmethod
- def log_stats(stats):
+ def log_stats(self, stats):
"""Log estimated stats during run."""
- report = {
- 'datetime': str(datetime.now()),
- 'tx_packets': stats['overall']['tx']['total_pkts'],
- 'rx_packets': stats['overall']['rx']['total_pkts'],
- 'drop_packets': stats['overall']['rx']['dropped_pkts'],
- 'drop_rate_percent': stats['overall']['drop_rate_percent']
- }
- LOG.info('TX: %(tx_packets)d; '
- 'RX: %(rx_packets)d; '
- 'Est. Dropped: %(drop_packets)d; '
- 'Est. Drop rate: %(drop_rate_percent).4f%%',
- report)
+ # Calculate a rolling drop rate based on differential to
+ # the previous reading
+ cur_tx = stats['overall']['tx']['total_pkts']
+ cur_rx = stats['overall']['rx']['total_pkts']
+ delta_tx = cur_tx - self.prev_tx
+ delta_rx = cur_rx - self.prev_rx
+ drops = delta_tx - delta_rx
+ if delta_tx == 0:
+ LOG.info("\x1b[1mConfiguration issue!\x1b[0m (no transmission)")
+ sys.exit(0)
+ drop_rate_pct = 100 * (delta_tx - delta_rx)/delta_tx
+ self.prev_tx = cur_tx
+ self.prev_rx = cur_rx
+ LOG.info('TX: %15s; RX: %15s; (Est.) Dropped: %12s; Drop rate: %8.4f%%',
+ format(cur_tx, ',d'),
+ format(cur_rx, ',d'),
+ format(drops, ',d'),
+ drop_rate_pct)
def run_traffic(self):
"""Start traffic and return intermediate stats for each interval."""
stats = self.runner.run()
+ self.prev_tx = 0
+ self.prev_rx = 0
while self.runner.is_running:
self.log_stats(stats)
yield stats
@@ -984,21 +1368,35 @@ class TrafficClient(object):
# because we want each direction to have the far end RX rates,
# use the far end index (1-idx) to retrieve the RX rates
for idx, key in enumerate(["direction-forward", "direction-reverse"]):
- tx_rate = results["stats"][idx]["tx"]["total_pkts"] / self.config.duration_sec
- rx_rate = results["stats"][1 - idx]["rx"]["total_pkts"] / self.config.duration_sec
+ tx_rate = results["stats"][str(idx)]["tx"]["total_pkts"] / self.config.duration_sec
+ rx_rate = results["stats"][str(1 - idx)]["rx"]["total_pkts"] / self.config.duration_sec
+
+ orig_rate = self.run_config['rates'][idx]
+ if self.config.periodic_gratuitous_arp:
+ orig_rate['rate_pps'] = float(
+ orig_rate['rate_pps']) - self.config.gratuitous_arp_pps
+
r[key] = {
- "orig": self.__convert_rates(self.run_config['rates'][idx]),
+ "orig": self.__convert_rates(orig_rate),
"tx": self.__convert_rates({'rate_pps': tx_rate}),
"rx": self.__convert_rates({'rate_pps': rx_rate})
}
+ if self.config.periodic_gratuitous_arp:
+ r['garp-direction-total'] = {
+ "orig": self.__convert_rates({'rate_pps': self.config.gratuitous_arp_pps * 2}),
+ "tx": self.__convert_rates({'rate_pps': results["stats"]["garp_total_tx_rate"]}),
+ "rx": self.__convert_rates({'rate_pps': 0})
+ }
+
total = {}
for direction in ['orig', 'tx', 'rx']:
total[direction] = {}
for unit in ['rate_percent', 'rate_bps', 'rate_pps']:
- total[direction][unit] = sum([float(x[direction][unit]) for x in r.values()])
+ total[direction][unit] = sum([float(x[direction][unit]) for x in list(r.values())])
r['direction-total'] = total
+
return r
def insert_interface_stats(self, pps_list):
@@ -1025,7 +1423,7 @@ class TrafficClient(object):
for chain_idx in range(self.config.service_chain_count)]
# note that we need to make a copy of the ifs list so that any modification in the
# list from pps will not change the list saved in self.ifstats
- self.pps_list = [PacketPathStats(list(ifs)) for ifs in self.ifstats]
+ self.pps_list = [PacketPathStats(self.config, list(ifs)) for ifs in self.ifstats]
# insert the corresponding pps in the passed list
pps_list.extend(self.pps_list)
@@ -1044,7 +1442,7 @@ class TrafficClient(object):
]
"""
if diff:
- stats = self.gen.get_stats()
+ stats = self.gen.get_stats(self.ifstats)
for chain_idx, ifs in enumerate(self.ifstats):
# each ifs has exactly 2 InterfaceStats and 2 Latency instances
# corresponding to the
diff --git a/nfvbench/traffic_gen/dummy.py b/nfvbench/traffic_gen/dummy.py
index 120a99b..95147ab 100644
--- a/nfvbench/traffic_gen/dummy.py
+++ b/nfvbench/traffic_gen/dummy.py
@@ -13,8 +13,8 @@
# under the License.
from nfvbench.log import LOG
-from traffic_base import AbstractTrafficGenerator
-import traffic_utils as utils
+from .traffic_base import AbstractTrafficGenerator
+from . import traffic_utils as utils
class DummyTG(AbstractTrafficGenerator):
@@ -102,7 +102,7 @@ class DummyTG(AbstractTrafficGenerator):
def clear_streamblock(self):
pass
- def get_stats(self):
+ def get_stats(self, ifstats=None):
"""Get stats from current run.
The binary search mainly looks at 2 results to make the decision:
@@ -147,6 +147,12 @@ class DummyTG(AbstractTrafficGenerator):
total_tx_pps += tx_pps
# actual total tx rate in pps
result['total_tx_rate'] = total_tx_pps
+ # actual offered tx rate in bps
+ avg_packet_size = utils.get_average_packet_size(self.l2_frame_size)
+ total_tx_bps = utils.pps_to_bps(total_tx_pps, avg_packet_size)
+ result['offered_tx_rate_bps'] = total_tx_bps
+
+ result.update(self.get_theoretical_rates(avg_packet_size))
return result
def get_stream_stats(self, tg_stats, if_stats, latencies, chain_idx):
@@ -176,8 +182,8 @@ class DummyTG(AbstractTrafficGenerator):
def fetch_capture_packets(self):
def _get_packet_capture(mac):
# convert text to binary
- src_mac = mac.replace(':', '').decode('hex')
- return {'binary': 'SSSSSS' + src_mac}
+ src_mac = bytearray.fromhex(mac.replace(':', '')).decode()
+ return {'binary': bytes('SSSSSS' + src_mac, 'ascii')}
# for packet capture, generate 2*scc random packets
# normally we should generate packets coming from the right dest macs
@@ -201,6 +207,9 @@ class DummyTG(AbstractTrafficGenerator):
def set_mode(self):
pass
+ def set_service_mode(self, enabled=True):
+ pass
+
def resolve_arp(self):
"""Resolve ARP sucessfully."""
def get_macs(port, scc):
diff --git a/nfvbench/traffic_gen/traffic_base.py b/nfvbench/traffic_gen/traffic_base.py
index 9c78d7e..30aec6e 100644
--- a/nfvbench/traffic_gen/traffic_base.py
+++ b/nfvbench/traffic_gen/traffic_base.py
@@ -16,7 +16,9 @@ import abc
import sys
from nfvbench.log import LOG
-import traffic_utils
+from . import traffic_utils
+from hdrh.histogram import HdrHistogram
+from functools import reduce
class Latency(object):
@@ -27,30 +29,42 @@ class Latency(object):
latency_list: aggregate all latency values from list if not None
"""
- self.min_usec = sys.maxint
+ self.min_usec = sys.maxsize
self.max_usec = 0
self.avg_usec = 0
self.hdrh = None
if latency_list:
+ hdrh_list = []
for lat in latency_list:
if lat.available():
self.min_usec = min(self.min_usec, lat.min_usec)
self.max_usec = max(self.max_usec, lat.max_usec)
self.avg_usec += lat.avg_usec
+ if lat.hdrh_available():
+ hdrh_list.append(HdrHistogram.decode(lat.hdrh))
+
+ # aggregate histograms if any
+ if hdrh_list:
+ def add_hdrh(x, y):
+ x.add(y)
+ return x
+ decoded_hdrh = reduce(add_hdrh, hdrh_list)
+ self.hdrh = HdrHistogram.encode(decoded_hdrh).decode('utf-8')
+
# round to nearest usec
self.avg_usec = int(round(float(self.avg_usec) / len(latency_list)))
def available(self):
"""Return True if latency information is available."""
- return self.min_usec != sys.maxint
+ return self.min_usec != sys.maxsize
+ def hdrh_available(self):
+ """Return True if latency histogram information is available."""
+ return self.hdrh is not None
class TrafficGeneratorException(Exception):
"""Exception for traffic generator."""
- pass
-
-
class AbstractTrafficGenerator(object):
def __init__(self, traffic_client):
@@ -85,7 +99,7 @@ class AbstractTrafficGenerator(object):
LOG.info('Modified traffic stream for port %s, new rate=%s.', port, self.rates[port_index])
@abc.abstractmethod
- def get_stats(self):
+ def get_stats(self, ifstats):
# Must be implemented by sub classes
return None
@@ -106,7 +120,6 @@ class AbstractTrafficGenerator(object):
def clear_streamblock(self):
"""Clear all streams from the traffic generator."""
- pass
@abc.abstractmethod
def resolve_arp(self):
@@ -116,7 +129,6 @@ class AbstractTrafficGenerator(object):
else a dict of list of dest macs indexed by port#
the dest macs in the list are indexed by the chain id
"""
- pass
@abc.abstractmethod
def get_macs(self):
@@ -124,7 +136,6 @@ class AbstractTrafficGenerator(object):
return: a list of MAC addresses indexed by the port#
"""
- pass
@abc.abstractmethod
def get_port_speed_gbps(self):
@@ -132,4 +143,25 @@ class AbstractTrafficGenerator(object):
return: a list of speed in Gbps indexed by the port#
"""
- pass
+
+ def get_theoretical_rates(self, avg_packet_size):
+
+ result = {}
+
+ # actual interface speed? (may be a virtual override)
+ intf_speed = self.config.intf_speed_used
+
+ if hasattr(self.config, 'user_info') and self.config.user_info is not None:
+ if "extra_encapsulation_bytes" in self.config.user_info:
+ frame_size_full_encapsulation = avg_packet_size + self.config.user_info[
+ "extra_encapsulation_bytes"]
+ result['theoretical_tx_rate_pps'] = traffic_utils.bps_to_pps(
+ intf_speed, frame_size_full_encapsulation) * 2
+ result['theoretical_tx_rate_bps'] = traffic_utils.pps_to_bps(
+ result['theoretical_tx_rate_pps'], avg_packet_size)
+ else:
+ result['theoretical_tx_rate_pps'] = traffic_utils.bps_to_pps(intf_speed,
+ avg_packet_size) * 2
+ result['theoretical_tx_rate_bps'] = traffic_utils.pps_to_bps(
+ result['theoretical_tx_rate_pps'], avg_packet_size)
+ return result
diff --git a/nfvbench/traffic_gen/traffic_utils.py b/nfvbench/traffic_gen/traffic_utils.py
index f856267..4366a6c 100644
--- a/nfvbench/traffic_gen/traffic_utils.py
+++ b/nfvbench/traffic_gen/traffic_utils.py
@@ -14,7 +14,6 @@
import bitmath
-from nfvbench.utils import multiplier_map
# IMIX frame size including the 4-byte FCS field
IMIX_L2_SIZES = [64, 594, 1518]
@@ -23,6 +22,11 @@ IMIX_RATIOS = [7, 4, 1]
IMIX_AVG_L2_FRAME_SIZE = sum(
[1.0 * imix[0] * imix[1] for imix in zip(IMIX_L2_SIZES, IMIX_RATIOS)]) / sum(IMIX_RATIOS)
+multiplier_map = {
+ 'K': 1000,
+ 'M': 1000000,
+ 'G': 1000000000
+}
def convert_rates(l2frame_size, rate, intf_speed):
"""Convert a given rate unit into the other rate units.
@@ -54,12 +58,11 @@ def convert_rates(l2frame_size, rate, intf_speed):
pps = bps_to_pps(bps, avg_packet_size)
else:
raise Exception('Traffic config needs to have a rate type key')
-
return {
'initial_rate_type': initial_rate_type,
- 'rate_pps': int(pps),
+ 'rate_pps': int(float(pps)),
'rate_percent': load,
- 'rate_bps': int(bps)
+ 'rate_bps': int(float(bps))
}
@@ -113,23 +116,22 @@ def parse_rate_str(rate_str):
rate_pps = rate_pps[:-1]
except KeyError:
multiplier = 1
- rate_pps = int(rate_pps.strip()) * multiplier
+ rate_pps = int(float(rate_pps.strip()) * multiplier)
if rate_pps <= 0:
raise Exception('%s is out of valid range' % rate_str)
return {'rate_pps': str(rate_pps)}
- elif rate_str.endswith('ps'):
+ if rate_str.endswith('ps'):
rate = rate_str.replace('ps', '').strip()
bit_rate = bitmath.parse_string(rate).bits
if bit_rate <= 0:
raise Exception('%s is out of valid range' % rate_str)
return {'rate_bps': str(int(bit_rate))}
- elif rate_str.endswith('%'):
+ if rate_str.endswith('%'):
rate_percent = float(rate_str.replace('%', '').strip())
if rate_percent <= 0 or rate_percent > 100.0:
raise Exception('%s is out of valid range (must be 1-100%%)' % rate_str)
return {'rate_percent': str(rate_percent)}
- else:
- raise Exception('Unknown rate string format %s' % rate_str)
+ raise Exception('Unknown rate string format %s' % rate_str)
def get_load_from_rate(rate_str, avg_frame_size=64, line_rate='10Gbps'):
'''From any rate string (with unit) return the corresponding load (in % unit)
@@ -172,10 +174,10 @@ def to_rate_str(rate):
if 'rate_pps' in rate:
pps = rate['rate_pps']
return '{}pps'.format(pps)
- elif 'rate_bps' in rate:
+ if 'rate_bps' in rate:
bps = rate['rate_bps']
return '{}bps'.format(bps)
- elif 'rate_percent' in rate:
+ if 'rate_percent' in rate:
load = rate['rate_percent']
return '{}%'.format(load)
assert False
@@ -185,7 +187,7 @@ def to_rate_str(rate):
def nan_replace(d):
"""Replaces every occurence of 'N/A' with float nan."""
- for k, v in d.iteritems():
+ for k, v in d.items():
if isinstance(v, dict):
nan_replace(v)
elif v == 'N/A':
@@ -200,5 +202,5 @@ def mac_to_int(mac):
def int_to_mac(i):
"""Converts integer representation of MAC address to hex string."""
mac = format(i, 'x').zfill(12)
- blocks = [mac[x:x + 2] for x in xrange(0, len(mac), 2)]
+ blocks = [mac[x:x + 2] for x in range(0, len(mac), 2)]
return ':'.join(blocks)
diff --git a/nfvbench/traffic_gen/trex_gen.py b/nfvbench/traffic_gen/trex_gen.py
index 036c899..dff72ac 100644
--- a/nfvbench/traffic_gen/trex_gen.py
+++ b/nfvbench/traffic_gen/trex_gen.py
@@ -15,25 +15,28 @@
import math
import os
+import sys
import random
import time
import traceback
+from functools import reduce
from itertools import count
+# pylint: disable=import-error
+from scapy.contrib.mpls import MPLS # flake8: noqa
+# pylint: enable=import-error
from nfvbench.log import LOG
+from nfvbench.specs import ChainType
from nfvbench.traffic_server import TRexTrafficServer
from nfvbench.utils import cast_integer
from nfvbench.utils import timeout
from nfvbench.utils import TimeoutError
-from traffic_base import AbstractTrafficGenerator
-from traffic_base import TrafficGeneratorException
-import traffic_utils as utils
-from traffic_utils import IMIX_AVG_L2_FRAME_SIZE
-from traffic_utils import IMIX_L2_SIZES
-from traffic_utils import IMIX_RATIOS
+
+from hdrh.histogram import HdrHistogram
# pylint: disable=import-error
from trex.common.services.trex_service_arp import ServiceARP
+from trex.stl.api import ARP
from trex.stl.api import bind_layers
from trex.stl.api import CTRexVmInsFixHwCs
from trex.stl.api import Dot1Q
@@ -49,17 +52,26 @@ from trex.stl.api import STLPktBuilder
from trex.stl.api import STLScVmRaw
from trex.stl.api import STLStream
from trex.stl.api import STLTXCont
+from trex.stl.api import STLTXMultiBurst
from trex.stl.api import STLVmFixChecksumHw
+from trex.stl.api import STLVmFixIpv4
from trex.stl.api import STLVmFlowVar
from trex.stl.api import STLVmFlowVarRepeatableRandom
+from trex.stl.api import STLVmTupleGen
from trex.stl.api import STLVmWrFlowVar
from trex.stl.api import ThreeBytesField
from trex.stl.api import UDP
from trex.stl.api import XByteField
-
# pylint: enable=import-error
+from .traffic_base import AbstractTrafficGenerator
+from .traffic_base import TrafficGeneratorException
+from . import traffic_utils as utils
+from .traffic_utils import IMIX_AVG_L2_FRAME_SIZE
+from .traffic_utils import IMIX_L2_SIZES
+from .traffic_utils import IMIX_RATIOS
+
class VXLAN(Packet):
"""VxLAN class."""
@@ -91,6 +103,7 @@ class TRex(AbstractTrafficGenerator):
self.rates = []
self.capture_id = None
self.packet_list = []
+ self.l2_frame_size = 0
def get_version(self):
"""Get the Trex version."""
@@ -111,7 +124,7 @@ class TRex(AbstractTrafficGenerator):
pg_id = port * TRex.PORT_PG_ID_MASK | chain_id
return pg_id, pg_id | TRex.LATENCY_PG_ID_MASK
- def extract_stats(self, in_stats):
+ def extract_stats(self, in_stats, ifstats):
"""Extract stats from dict returned by Trex API.
:param in_stats: dict as returned by TRex api
@@ -146,9 +159,68 @@ class TRex(AbstractTrafficGenerator):
self.__combine_latencies(in_stats, result[ph]['rx'], ph)
total_tx_pkts = result[0]['tx']['total_pkts'] + result[1]['tx']['total_pkts']
+
+ # in case of GARP packets we need to base total_tx_pkts value using flow_stats
+ # as no GARP packets have no flow stats and will not be received on the other port
+ if self.config.periodic_gratuitous_arp:
+ if not self.config.no_flow_stats and not self.config.no_latency_stats:
+ global_total_tx_pkts = total_tx_pkts
+ total_tx_pkts = 0
+ if ifstats:
+ for chain_id, _ in enumerate(ifstats):
+ for ph in self.port_handle:
+ pg_id, lat_pg_id = self.get_pg_id(ph, chain_id)
+ flows_tx_pkts = in_stats['flow_stats'][pg_id]['tx_pkts']['total'] + \
+ in_stats['flow_stats'][lat_pg_id]['tx_pkts']['total']
+ result[ph]['tx']['total_pkts'] = flows_tx_pkts
+ total_tx_pkts += flows_tx_pkts
+ else:
+ for pg_id in in_stats['flow_stats']:
+ if pg_id != 'global':
+ total_tx_pkts += in_stats['flow_stats'][pg_id]['tx_pkts']['total']
+ result["garp_total_tx_rate"] = cast_integer(
+ (global_total_tx_pkts - total_tx_pkts) / self.config.duration_sec)
+ else:
+ LOG.warning("Gratuitous ARP are not received by the other port so TRex and NFVbench"
+ " see these packets as dropped. Please do not activate no_flow_stats"
+ " and no_latency_stats properties to have a better drop rate.")
+
result["total_tx_rate"] = cast_integer(total_tx_pkts / self.config.duration_sec)
+ # actual offered tx rate in bps
+ avg_packet_size = utils.get_average_packet_size(self.l2_frame_size)
+ total_tx_bps = utils.pps_to_bps(result["total_tx_rate"], avg_packet_size)
+ result['offered_tx_rate_bps'] = total_tx_bps
+
+ result.update(self.get_theoretical_rates(avg_packet_size))
+
result["flow_stats"] = in_stats["flow_stats"]
result["latency"] = in_stats["latency"]
+
+ # Merge HDRHistogram to have an overall value for all chains and ports
+ # (provided that the histogram exists in the stats returned by T-Rex)
+ # Of course, empty histograms will produce an empty (invalid) histogram.
+ try:
+ hdrh_list = []
+ if ifstats:
+ for chain_id, _ in enumerate(ifstats):
+ for ph in self.port_handle:
+ _, lat_pg_id = self.get_pg_id(ph, chain_id)
+ hdrh_list.append(
+ HdrHistogram.decode(in_stats['latency'][lat_pg_id]['latency']['hdrh']))
+ else:
+ for pg_id in in_stats['latency']:
+ if pg_id != 'global':
+ hdrh_list.append(
+ HdrHistogram.decode(in_stats['latency'][pg_id]['latency']['hdrh']))
+
+ def add_hdrh(x, y):
+ x.add(y)
+ return x
+ decoded_hdrh = reduce(add_hdrh, hdrh_list)
+ result["overall_hdrh"] = HdrHistogram.encode(decoded_hdrh).decode('utf-8')
+ except KeyError:
+ pass
+
return result
def get_stream_stats(self, trex_stats, if_stats, latencies, chain_idx):
@@ -336,7 +408,7 @@ class TRex(AbstractTrafficGenerator):
bind_layers(UDP, VXLAN, dport=4789)
bind_layers(VXLAN, Ether)
- def _create_pkt(self, stream_cfg, l2frame_size):
+ def _create_pkt(self, stream_cfg, l2frame_size, disable_random_latency_flow=False):
"""Create a packet of given size.
l2frame_size: size of the L2 frame in bytes (including the 32-bit FCS)
@@ -363,6 +435,17 @@ class TRex(AbstractTrafficGenerator):
op="random")
vm_param = [vxlan_udp_src_fv,
STLVmWrFlowVar(fv_name="vxlan_udp_src", pkt_offset="UDP.sport")]
+ elif stream_cfg['mpls'] is True:
+ encap_level = '0'
+ pkt_base = Ether(src=stream_cfg['vtep_src_mac'], dst=stream_cfg['vtep_dst_mac'])
+ if stream_cfg['vtep_vlan'] is not None:
+ pkt_base /= Dot1Q(vlan=stream_cfg['vtep_vlan'])
+ if stream_cfg['mpls_outer_label'] is not None:
+ pkt_base /= MPLS(label=stream_cfg['mpls_outer_label'], cos=1, s=0, ttl=255)
+ if stream_cfg['mpls_inner_label'] is not None:
+ pkt_base /= MPLS(label=stream_cfg['mpls_inner_label'], cos=1, s=1, ttl=255)
+ # Flow stats and MPLS labels randomization TBD
+ pkt_base /= Ether(src=stream_cfg['mac_src'], dst=stream_cfg['mac_dst'])
else:
encap_level = '0'
pkt_base = Ether(src=stream_cfg['mac_src'], dst=stream_cfg['mac_dst'])
@@ -373,56 +456,172 @@ class TRex(AbstractTrafficGenerator):
udp_args = {}
if stream_cfg['udp_src_port']:
udp_args['sport'] = int(stream_cfg['udp_src_port'])
+ if stream_cfg['udp_port_step'] == 'random':
+ step = 1
+ else:
+ step = stream_cfg['udp_port_step']
+ udp_args['sport_step'] = int(step)
+ udp_args['sport_max'] = int(stream_cfg['udp_src_port_max'])
if stream_cfg['udp_dst_port']:
udp_args['dport'] = int(stream_cfg['udp_dst_port'])
- pkt_base /= IP() / UDP(**udp_args)
-
- if stream_cfg['ip_addrs_step'] == 'random':
- src_fv = STLVmFlowVarRepeatableRandom(
- name="ip_src",
- min_value=stream_cfg['ip_src_addr'],
- max_value=stream_cfg['ip_src_addr_max'],
- size=4,
- seed=random.randint(0, 32767),
- limit=stream_cfg['ip_src_count'])
- dst_fv = STLVmFlowVarRepeatableRandom(
- name="ip_dst",
- min_value=stream_cfg['ip_dst_addr'],
- max_value=stream_cfg['ip_dst_addr_max'],
- size=4,
- seed=random.randint(0, 32767),
- limit=stream_cfg['ip_dst_count'])
+ if stream_cfg['udp_port_step'] == 'random':
+ step = 1
+ else:
+ step = stream_cfg['udp_port_step']
+ udp_args['dport_step'] = int(step)
+ udp_args['dport_max'] = int(stream_cfg['udp_dst_port_max'])
+
+ pkt_base /= IP(src=stream_cfg['ip_src_addr'], dst=stream_cfg['ip_dst_addr']) / \
+ UDP(dport=udp_args['dport'], sport=udp_args['sport'])
+
+ # STLVmTupleGen need flow count >= cores used by TRex, if FC < cores we used STLVmFlowVar
+ if stream_cfg['ip_addrs_step'] == '0.0.0.1' and stream_cfg['udp_port_step'] == '1' and \
+ stream_cfg['count'] >= self.generator_config.cores:
+ src_fv = STLVmTupleGen(ip_min=stream_cfg['ip_src_addr'],
+ ip_max=stream_cfg['ip_src_addr_max'],
+ port_min=udp_args['sport'],
+ port_max=udp_args['sport_max'],
+ name="tuple_src",
+ limit_flows=stream_cfg['count'])
+ dst_fv = STLVmTupleGen(ip_min=stream_cfg['ip_dst_addr'],
+ ip_max=stream_cfg['ip_dst_addr_max'],
+ port_min=udp_args['dport'],
+ port_max=udp_args['dport_max'],
+ name="tuple_dst",
+ limit_flows=stream_cfg['count'])
+ vm_param = [
+ src_fv,
+ STLVmWrFlowVar(fv_name="tuple_src.ip",
+ pkt_offset="IP:{}.src".format(encap_level)),
+ STLVmWrFlowVar(fv_name="tuple_src.port",
+ pkt_offset="UDP:{}.sport".format(encap_level)),
+ dst_fv,
+ STLVmWrFlowVar(fv_name="tuple_dst.ip",
+ pkt_offset="IP:{}.dst".format(encap_level)),
+ STLVmWrFlowVar(fv_name="tuple_dst.port",
+ pkt_offset="UDP:{}.dport".format(encap_level)),
+ ]
else:
- src_fv = STLVmFlowVar(
- name="ip_src",
- min_value=stream_cfg['ip_src_addr'],
- max_value=stream_cfg['ip_src_addr'],
- size=4,
- op="inc",
- step=stream_cfg['ip_addrs_step'])
- dst_fv = STLVmFlowVar(
- name="ip_dst",
- min_value=stream_cfg['ip_dst_addr'],
- max_value=stream_cfg['ip_dst_addr_max'],
- size=4,
- op="inc",
- step=stream_cfg['ip_addrs_step'])
-
- vm_param.extend([
- src_fv,
- STLVmWrFlowVar(fv_name="ip_src", pkt_offset="IP:{}.src".format(encap_level)),
- dst_fv,
- STLVmWrFlowVar(fv_name="ip_dst", pkt_offset="IP:{}.dst".format(encap_level))
- ])
-
- for encap in range(int(encap_level), -1, -1):
- # Fixing the checksums for all encap levels
- vm_param.append(STLVmFixChecksumHw(l3_offset="IP:{}".format(encap),
- l4_offset="UDP:{}".format(encap),
- l4_type=CTRexVmInsFixHwCs.L4_TYPE_UDP))
+ if disable_random_latency_flow:
+ src_fv_ip = STLVmFlowVar(
+ name="ip_src",
+ min_value=stream_cfg['ip_src_addr'],
+ max_value=stream_cfg['ip_src_addr'],
+ size=4)
+ dst_fv_ip = STLVmFlowVar(
+ name="ip_dst",
+ min_value=stream_cfg['ip_dst_addr'],
+ max_value=stream_cfg['ip_dst_addr'],
+ size=4)
+ elif stream_cfg['ip_addrs_step'] == 'random':
+ src_fv_ip = STLVmFlowVarRepeatableRandom(
+ name="ip_src",
+ min_value=stream_cfg['ip_src_addr'],
+ max_value=stream_cfg['ip_src_addr_max'],
+ size=4,
+ seed=random.randint(0, 32767),
+ limit=stream_cfg['ip_src_count'])
+ dst_fv_ip = STLVmFlowVarRepeatableRandom(
+ name="ip_dst",
+ min_value=stream_cfg['ip_dst_addr'],
+ max_value=stream_cfg['ip_dst_addr_max'],
+ size=4,
+ seed=random.randint(0, 32767),
+ limit=stream_cfg['ip_dst_count'])
+ else:
+ src_fv_ip = STLVmFlowVar(
+ name="ip_src",
+ min_value=stream_cfg['ip_src_addr'],
+ max_value=stream_cfg['ip_src_addr_max'],
+ size=4,
+ op="inc",
+ step=stream_cfg['ip_addrs_step'])
+ dst_fv_ip = STLVmFlowVar(
+ name="ip_dst",
+ min_value=stream_cfg['ip_dst_addr'],
+ max_value=stream_cfg['ip_dst_addr_max'],
+ size=4,
+ op="inc",
+ step=stream_cfg['ip_addrs_step'])
+
+ if disable_random_latency_flow:
+ src_fv_port = STLVmFlowVar(
+ name="p_src",
+ min_value=udp_args['sport'],
+ max_value=udp_args['sport'],
+ size=2)
+ dst_fv_port = STLVmFlowVar(
+ name="p_dst",
+ min_value=udp_args['dport'],
+ max_value=udp_args['dport'],
+ size=2)
+ elif stream_cfg['udp_port_step'] == 'random':
+ src_fv_port = STLVmFlowVarRepeatableRandom(
+ name="p_src",
+ min_value=udp_args['sport'],
+ max_value=udp_args['sport_max'],
+ size=2,
+ seed=random.randint(0, 32767),
+ limit=stream_cfg['udp_src_count'])
+ dst_fv_port = STLVmFlowVarRepeatableRandom(
+ name="p_dst",
+ min_value=udp_args['dport'],
+ max_value=udp_args['dport_max'],
+ size=2,
+ seed=random.randint(0, 32767),
+ limit=stream_cfg['udp_dst_count'])
+ else:
+ src_fv_port = STLVmFlowVar(
+ name="p_src",
+ min_value=udp_args['sport'],
+ max_value=udp_args['sport_max'],
+ size=2,
+ op="inc",
+ step=udp_args['sport_step'])
+ dst_fv_port = STLVmFlowVar(
+ name="p_dst",
+ min_value=udp_args['dport'],
+ max_value=udp_args['dport_max'],
+ size=2,
+ op="inc",
+ step=udp_args['dport_step'])
+ vm_param = [
+ src_fv_ip,
+ STLVmWrFlowVar(fv_name="ip_src", pkt_offset="IP:{}.src".format(encap_level)),
+ src_fv_port,
+ STLVmWrFlowVar(fv_name="p_src", pkt_offset="UDP:{}.sport".format(encap_level)),
+ dst_fv_ip,
+ STLVmWrFlowVar(fv_name="ip_dst", pkt_offset="IP:{}.dst".format(encap_level)),
+ dst_fv_port,
+ STLVmWrFlowVar(fv_name="p_dst", pkt_offset="UDP:{}.dport".format(encap_level)),
+ ]
+ # Use HW Offload to calculate the outter IP/UDP packet
+ vm_param.append(STLVmFixChecksumHw(l3_offset="IP:0",
+ l4_offset="UDP:0",
+ l4_type=CTRexVmInsFixHwCs.L4_TYPE_UDP))
+ # Use software to fix the inner IP/UDP payload for VxLAN packets
+ if int(encap_level):
+ vm_param.append(STLVmFixIpv4(offset="IP:1"))
pad = max(0, frame_size - len(pkt_base)) * 'x'
- return STLPktBuilder(pkt=pkt_base / pad, vm=STLScVmRaw(vm_param))
+ return STLPktBuilder(pkt=pkt_base / pad,
+ vm=STLScVmRaw(vm_param, cache_size=int(self.config.cache_size)))
+
+ def _create_gratuitous_arp_pkt(self, stream_cfg):
+ """Create a GARP packet.
+
+ """
+ pkt_base = Ether(src=stream_cfg['mac_src'], dst="ff:ff:ff:ff:ff:ff")
+
+ if self.config.vxlan or self.config.mpls:
+ pkt_base /= Dot1Q(vlan=stream_cfg['vtep_vlan'])
+ elif stream_cfg['vlan_tag'] is not None:
+ pkt_base /= Dot1Q(vlan=stream_cfg['vlan_tag'])
+
+ pkt_base /= ARP(psrc=stream_cfg['ip_src_tg_gw'], hwsrc=stream_cfg['mac_src'],
+ hwdst=stream_cfg['mac_src'], pdst=stream_cfg['ip_src_tg_gw'])
+
+ return STLPktBuilder(pkt=pkt_base)
def generate_streams(self, port, chain_id, stream_cfg, l2frame, latency=True,
e2e=False):
@@ -440,62 +639,180 @@ class TRex(AbstractTrafficGenerator):
if l2frame == 'IMIX':
for ratio, l2_frame_size in zip(IMIX_RATIOS, IMIX_L2_SIZES):
pkt = self._create_pkt(stream_cfg, l2_frame_size)
- if e2e:
+ if e2e or stream_cfg['mpls']:
streams.append(STLStream(packet=pkt,
mode=STLTXCont(pps=ratio)))
else:
if stream_cfg['vxlan'] is True:
streams.append(STLStream(packet=pkt,
flow_stats=STLFlowStats(pg_id=pg_id,
- vxlan=True),
+ vxlan=True)
+ if not self.config.no_flow_stats else None,
mode=STLTXCont(pps=ratio)))
else:
streams.append(STLStream(packet=pkt,
- flow_stats=STLFlowStats(pg_id=pg_id),
+ flow_stats=STLFlowStats(pg_id=pg_id)
+ if not self.config.no_flow_stats else None,
mode=STLTXCont(pps=ratio)))
if latency:
# for IMIX, the latency packets have the average IMIX packet size
- pkt = self._create_pkt(stream_cfg, IMIX_AVG_L2_FRAME_SIZE)
+ if stream_cfg['ip_addrs_step'] == 'random' or \
+ stream_cfg['udp_port_step'] == 'random':
+ # Force latency flow to only one flow to avoid creating flows
+ # over requested flow count
+ pkt = self._create_pkt(stream_cfg, IMIX_AVG_L2_FRAME_SIZE, True)
+ else:
+ pkt = self._create_pkt(stream_cfg, IMIX_AVG_L2_FRAME_SIZE)
else:
l2frame_size = int(l2frame)
pkt = self._create_pkt(stream_cfg, l2frame_size)
- if e2e:
+ if self.config.periodic_gratuitous_arp:
+ requested_pps = int(utils.parse_rate_str(self.rates[0])[
+ 'rate_pps']) - self.config.gratuitous_arp_pps
+ if latency:
+ requested_pps -= self.LATENCY_PPS
+ stltx_cont = STLTXCont(pps=requested_pps)
+ else:
+ stltx_cont = STLTXCont()
+ if e2e or stream_cfg['mpls']:
streams.append(STLStream(packet=pkt,
- mode=STLTXCont()))
+ # Flow stats is disabled for MPLS now
+ # flow_stats=STLFlowStats(pg_id=pg_id),
+ mode=stltx_cont))
else:
if stream_cfg['vxlan'] is True:
streams.append(STLStream(packet=pkt,
flow_stats=STLFlowStats(pg_id=pg_id,
- vxlan=True),
- mode=STLTXCont()))
+ vxlan=True)
+ if not self.config.no_flow_stats else None,
+ mode=stltx_cont))
else:
streams.append(STLStream(packet=pkt,
- flow_stats=STLFlowStats(pg_id=pg_id),
- mode=STLTXCont()))
+ flow_stats=STLFlowStats(pg_id=pg_id)
+ if not self.config.no_flow_stats else None,
+ mode=stltx_cont))
# for the latency stream, the minimum payload is 16 bytes even in case of vlan tagging
# without vlan, the min l2 frame size is 64
# with vlan it is 68
# This only applies to the latency stream
- if latency and stream_cfg['vlan_tag'] and l2frame_size < 68:
- pkt = self._create_pkt(stream_cfg, 68)
+ if latency:
+ if stream_cfg['vlan_tag'] and l2frame_size < 68:
+ l2frame_size = 68
+ if stream_cfg['ip_addrs_step'] == 'random' or \
+ stream_cfg['udp_port_step'] == 'random':
+ # Force latency flow to only one flow to avoid creating flows
+ # over requested flow count
+ pkt = self._create_pkt(stream_cfg, l2frame_size, True)
+ else:
+ pkt = self._create_pkt(stream_cfg, l2frame_size)
if latency:
- # TRex limitation: VXLAN skip is not supported for latency stream
- streams.append(STLStream(packet=pkt,
- flow_stats=STLFlowLatencyStats(pg_id=lat_pg_id),
- mode=STLTXCont(pps=self.LATENCY_PPS)))
+ if self.config.no_latency_stats:
+ LOG.info("Latency flow statistics are disabled.")
+ if stream_cfg['vxlan'] is True:
+ streams.append(STLStream(packet=pkt,
+ flow_stats=STLFlowLatencyStats(pg_id=lat_pg_id,
+ vxlan=True)
+ if not self.config.no_latency_stats else None,
+ mode=STLTXCont(pps=self.LATENCY_PPS)))
+ else:
+ streams.append(STLStream(packet=pkt,
+ flow_stats=STLFlowLatencyStats(pg_id=lat_pg_id)
+ if not self.config.no_latency_stats else None,
+ mode=STLTXCont(pps=self.LATENCY_PPS)))
+
+ if self.config.periodic_gratuitous_arp and (
+ self.config.l3_router or self.config.service_chain == ChainType.EXT):
+ # In case of L3 router feature or EXT chain with router
+ # and depending on ARP stale time SUT configuration
+ # Gratuitous ARP from TG port to the router is needed to keep traffic up
+ garp_pkt = self._create_gratuitous_arp_pkt(stream_cfg)
+ ibg = self.config.gratuitous_arp_pps * 1000000.0
+ packets_count = int(self.config.duration_sec / self.config.gratuitous_arp_pps)
+ streams.append(
+ STLStream(packet=garp_pkt,
+ mode=STLTXMultiBurst(pkts_per_burst=1, count=packets_count, ibg=ibg)))
return streams
@timeout(5)
def __connect(self, client):
client.connect()
+ def __local_server_status(self):
+ """ The TRex server may have started but failed initializing... and stopped.
+ This piece of code is especially designed to address
+ the case when a fatal failure occurs on a DPDK init call.
+ The TRex algorihm should be revised to include some missing timeouts (?)
+ status returned:
+ 0: no error detected
+ 1: fatal error detected - should lead to exiting the run
+ 2: error detected that could be solved by starting again
+ The diagnostic is based on parsing the local trex log file (improvable)
+ """
+ status = 0
+ message = None
+ failure = None
+ exited = None
+ cause = None
+ error = None
+ before = None
+ after = None
+ last = None
+ try:
+ with open('/tmp/trex.log', 'r', encoding="utf-8") as trex_log:
+ for _line in trex_log:
+ line = _line.strip()
+ if line.startswith('Usage:'):
+ break
+ if 'ports are bound' in line:
+ continue
+ if 'please wait' in line:
+ continue
+ if 'exit' in line.lower():
+ exited = line
+ elif 'cause' in line.lower():
+ cause = line
+ elif 'fail' in line.lower():
+ failure = line
+ elif 'msg' in line.lower():
+ message = line
+ elif (error is not None) and line:
+ after = line
+ elif line.startswith('Error:') or line.startswith('ERROR'):
+ error = line
+ before = last
+ last = line
+ except FileNotFoundError:
+ pass
+ if exited is not None:
+ status = 1
+ LOG.info("\x1b[1m%s\x1b[0m %s", 'TRex failed initializing:', exited)
+ if cause is not None:
+ LOG.info("TRex [cont'd] %s", cause)
+ if failure is not None:
+ LOG.info("TRex [cont'd] %s", failure)
+ if message is not None:
+ LOG.info("TRex [cont'd] %s", message)
+ if 'not supported yet' in message.lower():
+ LOG.info("TRex [cont'd] Try starting again!")
+ status = 2
+ elif error is not None:
+ status = 1
+ LOG.info("\x1b[1m%s\x1b[0m %s", 'TRex failed initializing:', error)
+ if after is not None:
+ LOG.info("TRex [cont'd] %s", after)
+ elif before is not None:
+ LOG.info("TRex [cont'd] %s", before)
+ return status
+
def __connect_after_start(self):
# after start, Trex may take a bit of time to initialize
# so we need to retry a few times
- for it in xrange(self.config.generic_retry_count):
+ # we try to capture recoverable error cases (checking status)
+ status = 0
+ for it in range(self.config.generic_retry_count):
try:
time.sleep(1)
self.client.connect()
@@ -503,10 +820,23 @@ class TRex(AbstractTrafficGenerator):
except Exception as ex:
if it == (self.config.generic_retry_count - 1):
raise
- LOG.info("Retrying connection to TRex (%s)...", ex.message)
+ status = self.__local_server_status()
+ if status > 0:
+ # No need to wait anymore, something went wrong and TRex exited
+ if status == 1:
+ LOG.info("\x1b[1m%s\x1b[0m", 'TRex failed starting!')
+ print("More information? Try the command: "
+ + "\x1b[1mnfvbench --show-trex-log\x1b[0m")
+ sys.exit(0)
+ if status == 2:
+ # a new start will follow
+ return status
+ LOG.info("Retrying connection to TRex (%s)...", ex.msg)
+ return status
def connect(self):
"""Connect to the TRex server."""
+ status = 0
server_ip = self.generator_config.ip
LOG.info("Connecting to TRex (%s)...", server_ip)
@@ -518,12 +848,19 @@ class TRex(AbstractTrafficGenerator):
if server_ip == '127.0.0.1':
config_updated = self.__check_config()
if config_updated or self.config.restart:
- self.__restart()
+ status = self.__restart()
except (TimeoutError, STLError) as e:
if server_ip == '127.0.0.1':
- self.__start_local_server()
+ status = self.__start_local_server()
else:
- raise TrafficGeneratorException(e.message)
+ raise TrafficGeneratorException(e.message) from e
+
+ if status == 2:
+ # Workaround in case of a failed TRex server initialization
+ # we try to start it again (twice maximum)
+ # which may allow low level initialization to complete.
+ if self.__start_local_server() == 2:
+ self.__start_local_server()
ports = list(self.generator_config.ports)
self.port_handle = ports
@@ -560,7 +897,7 @@ class TRex(AbstractTrafficGenerator):
try:
LOG.info("Starting TRex ...")
self.__start_server()
- self.__connect_after_start()
+ status = self.__connect_after_start()
except (TimeoutError, STLError) as e:
LOG.error('Cannot connect to TRex')
LOG.error(traceback.format_exc())
@@ -568,18 +905,19 @@ class TRex(AbstractTrafficGenerator):
if os.path.isfile(logpath):
# Wait for TRex to finish writing error message
last_size = 0
- for _ in xrange(self.config.generic_retry_count):
+ for _ in range(self.config.generic_retry_count):
size = os.path.getsize(logpath)
if size == last_size:
# probably not writing anymore
break
last_size = size
time.sleep(1)
- with open(logpath, 'r') as f:
+ with open(logpath, 'r', encoding="utf-8") as f:
message = f.read()
else:
message = e.message
- raise TrafficGeneratorException(message)
+ raise TrafficGeneratorException(message) from e
+ return status
def __start_server(self):
server = TRexTrafficServer()
@@ -593,12 +931,13 @@ class TRex(AbstractTrafficGenerator):
LOG.info("Restarting TRex ...")
self.__stop_server()
# Wait for server stopped
- for _ in xrange(self.config.generic_retry_count):
+ for _ in range(self.config.generic_retry_count):
time.sleep(1)
if not self.client.is_connected():
LOG.info("TRex is stopped...")
break
- self.__start_local_server()
+ # Start and report a possible failure
+ return self.__start_local_server()
def __stop_server(self):
if self.generator_config.ip == '127.0.0.1':
@@ -609,7 +948,7 @@ class TRex(AbstractTrafficGenerator):
self.client.release(ports=ports)
self.client.server_shutdown()
except STLError as e:
- LOG.warn('Unable to stop TRex. Error: %s', e)
+ LOG.warning('Unable to stop TRex. Error: %s', e)
else:
LOG.info('Using remote TRex. Unable to stop TRex')
@@ -632,7 +971,7 @@ class TRex(AbstractTrafficGenerator):
dst_macs = [None] * chain_count
dst_macs_count = 0
# the index in the list is the chain id
- if self.config.vxlan:
+ if self.config.vxlan or self.config.mpls:
arps = [
ServiceARP(ctx,
src_ip=device.vtep_src_ip,
@@ -674,12 +1013,12 @@ class TRex(AbstractTrafficGenerator):
arp_dest_macs[port] = dst_macs
LOG.info('ARP resolved successfully for port %s', port)
break
- else:
- retry = attempt + 1
- LOG.info('Retrying ARP for: %s (retry %d/%d)',
- unresolved, retry, self.config.generic_retry_count)
- if retry < self.config.generic_retry_count:
- time.sleep(self.config.generic_poll_sec)
+
+ retry = attempt + 1
+ LOG.info('Retrying ARP for: %s (retry %d/%d)',
+ unresolved, retry, self.config.generic_retry_count)
+ if retry < self.config.generic_retry_count:
+ time.sleep(self.config.generic_poll_sec)
else:
LOG.error('ARP timed out for port %s (resolved %d out of %d)',
port,
@@ -687,7 +1026,12 @@ class TRex(AbstractTrafficGenerator):
chain_count)
break
- self.client.set_service_mode(ports=self.port_handle, enabled=False)
+ # A traffic capture may have been started (from a T-Rex console) at this time.
+ # If asked so, we keep the service mode enabled here, and disable it otherwise.
+ # | Disabling the service mode while a capture is in progress
+ # | would cause the application to stop/crash with an error.
+ if not self.config.service_mode:
+ self.client.set_service_mode(ports=self.port_handle, enabled=False)
if len(arp_dest_macs) == len(self.port_handle):
return arp_dest_macs
return None
@@ -704,9 +1048,14 @@ class TRex(AbstractTrafficGenerator):
total_rate += int(r['rate_pps'])
else:
mult = 1
- total_rate = utils.convert_rates(l2frame_size, rates[0], intf_speed)
+ r = utils.convert_rates(l2frame_size, rates[0], intf_speed)
+ total_rate = int(r['rate_pps'])
# rate must be enough for latency stream and at least 1 pps for base stream per chain
- required_rate = (self.LATENCY_PPS + 1) * self.config.service_chain_count * mult
+ if self.config.periodic_gratuitous_arp:
+ required_rate = (self.LATENCY_PPS + 1 + self.config.gratuitous_arp_pps) \
+ * self.config.service_chain_count * mult
+ else:
+ required_rate = (self.LATENCY_PPS + 1) * self.config.service_chain_count * mult
result = utils.convert_rates(l2frame_size,
{'rate_pps': required_rate},
intf_speed * mult)
@@ -725,6 +1074,8 @@ class TRex(AbstractTrafficGenerator):
latency: True if latency measurement is needed
e2e: True if performing "end to end" connectivity check
"""
+ if self.config.no_flow_stats:
+ LOG.info("Traffic flow statistics are disabled.")
r = self.__is_rate_enough(l2frame_size, rates, bidirectional, latency)
if not r['result']:
raise TrafficGeneratorException(
@@ -732,6 +1083,7 @@ class TRex(AbstractTrafficGenerator):
.format(pps=r['rate_pps'],
bps=r['rate_bps'],
load=r['rate_percent']))
+ self.l2_frame_size = l2frame_size
# a dict of list of streams indexed by port#
# in case of fixed size, has self.chain_count * 2 * 2 streams
# (1 normal + 1 latency stream per direction per chain)
@@ -741,6 +1093,11 @@ class TRex(AbstractTrafficGenerator):
for port in self.port_handle:
streamblock[port] = []
stream_cfgs = [d.get_stream_configs() for d in self.generator_config.devices]
+ if self.generator_config.ip_addrs_step == 'random' \
+ or self.generator_config.gen_config.udp_port_step == 'random':
+ LOG.warning("Using random step, the number of flows can be less than "
+ "the requested number of flows due to repeatable multivariate random "
+ "generation which can reproduce the same pattern of values")
self.rates = [utils.to_rate_str(rate) for rate in rates]
for chain_id, (fwd_stream_cfg, rev_stream_cfg) in enumerate(zip(*stream_cfgs)):
streamblock[0].extend(self.generate_streams(self.port_handle[0],
@@ -771,10 +1128,10 @@ class TRex(AbstractTrafficGenerator):
self.client.reset(self.port_handle)
LOG.info('Cleared all existing streams')
- def get_stats(self):
+ def get_stats(self, ifstats=None):
"""Get stats from Trex."""
stats = self.client.get_stats()
- return self.extract_stats(stats)
+ return self.extract_stats(stats, ifstats)
def get_macs(self):
"""Return the Trex local port MAC addresses.
@@ -814,8 +1171,8 @@ class TRex(AbstractTrafficGenerator):
bpf_filter = "ether dst %s or ether dst %s" % (src_mac_list[0], src_mac_list[1])
# ports must be set in service in order to enable capture
self.client.set_service_mode(ports=self.port_handle)
- self.capture_id = self.client.start_capture(rx_ports=self.port_handle,
- bpf_filter=bpf_filter)
+ self.capture_id = self.client.start_capture \
+ (rx_ports=self.port_handle, bpf_filter=bpf_filter)
def fetch_capture_packets(self):
"""Fetch capture packets in capture mode."""
@@ -829,7 +1186,12 @@ class TRex(AbstractTrafficGenerator):
if self.capture_id:
self.client.stop_capture(capture_id=self.capture_id['id'])
self.capture_id = None
- self.client.set_service_mode(ports=self.port_handle, enabled=False)
+ # A traffic capture may have been started (from a T-Rex console) at this time.
+ # If asked so, we keep the service mode enabled here, and disable it otherwise.
+ # | Disabling the service mode while a capture is in progress
+ # | would cause the application to stop/crash with an error.
+ if not self.config.service_mode:
+ self.client.set_service_mode(ports=self.port_handle, enabled=False)
def cleanup(self):
"""Cleanup Trex driver."""
@@ -840,3 +1202,7 @@ class TRex(AbstractTrafficGenerator):
except STLError:
# TRex does not like a reset while in disconnected state
pass
+
+ def set_service_mode(self, enabled=True):
+ """Enable/disable the 'service' mode."""
+ self.client.set_service_mode(ports=self.port_handle, enabled=enabled)
diff --git a/nfvbench/traffic_server.py b/nfvbench/traffic_server.py
index 4dc7dce..5111b32 100644
--- a/nfvbench/traffic_server.py
+++ b/nfvbench/traffic_server.py
@@ -16,7 +16,7 @@ import os
import subprocess
import yaml
-from log import LOG
+from .log import LOG
class TrafficServerException(Exception):
@@ -53,25 +53,36 @@ class TRexTrafficServer(TrafficServer):
# --unbind-unused-ports: for NIC that have more than 2 ports such as Intel X710
# this will instruct trex to unbind all ports that are unused instead of
# erroring out with an exception (i40e only)
+ # Try: --ignore-528-issue -> neither unbind nor exit with error,
+ # just proceed cause it might work!
+ # Note that force unbinding is probably a bad choice:
+ # we can't assume for sure that other ports are "unused".
+ # The default TRex behaviour - exit - is indeed a safer option;
+ # a message informs about the ports that should be unbound.
+ i40e_opt = ("--ignore-528-issue" if
+ generator_config.config.i40e_mixed == 'ignore' else
+ "--unbind-unused-ports" if
+ generator_config.config.i40e_mixed == 'unbind' else "")
cmd = ['nohup', '/bin/bash', '-c',
'./t-rex-64 -i -c {} --iom 0 --no-scapy-server '
- '--unbind-unused-ports --close-at-end {} {} '
+ '--close-at-end {} {} {} '
'{} {} --cfg {} &> /tmp/trex.log & disown'.format(cores, sw_mode,
+ i40e_opt,
vlan_opt,
hdrh_opt,
mbuf_opt, cfg)]
LOG.info(' '.join(cmd))
- subprocess.Popen(cmd, cwd=self.trex_dir)
- LOG.info('TRex server is running...')
+ with subprocess.Popen(cmd, cwd=self.trex_dir) as trex_process:
+ LOG.info('TRex server is running (PID: %s)...', trex_process.pid)
def __load_config(self, filename):
result = {}
if os.path.exists(filename):
- with open(filename, 'r') as stream:
+ with open(filename, 'r', encoding="utf-8") as stream:
try:
result = yaml.safe_load(stream)
except yaml.YAMLError as exc:
- print exc
+ print(exc)
return result
def __save_config(self, generator_config, filename):
@@ -79,54 +90,87 @@ class TRexTrafficServer(TrafficServer):
yaml.safe_load(result)
if os.path.exists(filename):
os.remove(filename)
- with open(filename, 'w') as f:
+ with open(filename, 'w', encoding="utf-8") as f:
f.write(result)
return filename
def __prepare_config(self, generator_config):
ifs = ",".join([repr(pci) for pci in generator_config.pcis])
+
+ # For consistency and stability reasons, the T-Rex server
+ # should be forciby restarted each time the value of a
+ # parameter, specified as one of the starting command line
+ # arguments, has been modified since the last launch.
+ # Hence we add some extra fields to the config file
+ # (nb_cores, use_vlan, mbuf_factor, i40e_mixed, hdrh)
+ # which will serve as a memory between runs -
+ # while being actually ignored by the T-Rex server.
+
result = """# Config generated by NFVbench
- - port_limit : 2
- version : 2
+ - port_limit : 2
+ version : 2
zmq_pub_port : {zmq_pub_port}
zmq_rpc_port : {zmq_rpc_port}
prefix : {prefix}
limit_memory : {limit_memory}
- interfaces : [{ifs}]""".format(zmq_pub_port=generator_config.zmq_pub_port,
- zmq_rpc_port=generator_config.zmq_rpc_port,
- prefix=generator_config.name,
- limit_memory=generator_config.limit_memory,
- ifs=ifs)
+ command_line :
+ sw_mode : {sw_mode}
+ mbuf_factor: {mbuf_factor}
+ hdrh : {hdrh}
+ nb_cores : {nb_cores}
+ use_vlan : {use_vlan}
+ i40e_mixed : {i40e_mixed}
+ interfaces : [{ifs}]""".format(
+ zmq_pub_port=generator_config.zmq_pub_port,
+ zmq_rpc_port=generator_config.zmq_rpc_port,
+ prefix=generator_config.name,
+ limit_memory=generator_config.limit_memory,
+ sw_mode=generator_config.software_mode,
+ mbuf_factor=generator_config.mbuf_factor,
+ hdrh=generator_config.hdrh,
+ nb_cores=generator_config.cores,
+ use_vlan=generator_config.gen_config.get('vtep_vlan') or
+ generator_config.vlan_tagging,
+ i40e_mixed=generator_config.config.i40e_mixed,
+ ifs=ifs)
+
+ if hasattr(generator_config, 'mbuf_64') and generator_config.mbuf_64:
+ result += """
+ memory :
+ mbuf_64 : {mbuf_64}""".format(mbuf_64=generator_config.mbuf_64)
+
if self.__check_platform_config(generator_config):
try:
platform = """
platform :
master_thread_id : {master_thread_id}
latency_thread_id : {latency_thread_id}
- dual_if:""".format(master_thread_id=generator_config.platform.master_thread_id,
- latency_thread_id=generator_config.platform.latency_thread_id)
+ dual_if:""".format(master_thread_id=generator_config.gen_config.platform.
+ master_thread_id,
+ latency_thread_id=generator_config.gen_config.platform.
+ latency_thread_id)
result += platform
- for core in generator_config.platform.dual_if:
+ for core in generator_config.gen_config.platform.dual_if:
threads = ""
try:
threads = ",".join([repr(thread) for thread in core.threads])
except TypeError:
- LOG.warn("No threads defined for socket %s", core.socket)
+ LOG.warning("No threads defined for socket %s", core.socket)
core_result = """
- socket : {socket}
threads : [{threads}]""".format(socket=core.socket, threads=threads)
result += core_result
except (KeyError, AttributeError):
pass
- return result
+ return result + "\n"
def __check_platform_config(self, generator_config):
- return hasattr(generator_config, 'platform') \
- and hasattr(generator_config.platform, "master_thread_id") \
- and generator_config.platform.master_thread_id is not None \
- and hasattr(generator_config.platform, "latency_thread_id") \
- and generator_config.platform.latency_thread_id is not None
+ return hasattr(generator_config.gen_config, 'platform') \
+ and hasattr(generator_config.gen_config.platform, "master_thread_id") \
+ and generator_config.gen_config.platform.master_thread_id is not None \
+ and hasattr(generator_config.gen_config.platform, "latency_thread_id") \
+ and generator_config.gen_config.platform.latency_thread_id is not None
def check_config_updated(self, generator_config):
existing_config = self.__load_config(filename='/etc/trex_cfg.yaml')
diff --git a/nfvbench/utils.py b/nfvbench/utils.py
index ecbb55a..07a38cb 100644
--- a/nfvbench/utils.py
+++ b/nfvbench/utils.py
@@ -13,6 +13,8 @@
# under the License.
import glob
+import time
+from math import gcd
from math import isnan
import os
import re
@@ -23,8 +25,9 @@ import errno
import fcntl
from functools import wraps
import json
-from log import LOG
-
+from .log import LOG
+from nfvbench.traffic_gen.traffic_utils import multiplier_map
+from novaclient.exceptions import NotFound
class TimeoutError(Exception):
pass
@@ -50,7 +53,7 @@ def timeout(seconds=10, error_message=os.strerror(errno.ETIME)):
def save_json_result(result, json_file, std_json_path, service_chain, service_chain_count,
- flow_count, frame_sizes):
+ flow_count, frame_sizes, user_id=None, group_id=None):
"""Save results in json format file."""
filepaths = []
if json_file:
@@ -63,29 +66,18 @@ def save_json_result(result, json_file, std_json_path, service_chain, service_ch
if filepaths:
for file_path in filepaths:
LOG.info('Saving results in json file: %s...', file_path)
- with open(file_path, 'w') as jfp:
+ with open(file_path, 'w', encoding="utf-8") as jfp:
json.dump(result,
jfp,
indent=4,
sort_keys=True,
separators=(',', ': '),
default=lambda obj: obj.to_json())
-
-
-def byteify(data, ignore_dicts=False):
- # if this is a unicode string, return its string representation
- if isinstance(data, unicode):
- return data.encode('utf-8')
- # if this is a list of values, return list of byteified values
- if isinstance(data, list):
- return [byteify(item, ignore_dicts=ignore_dicts) for item in data]
- # if this is a dictionary, return dictionary of byteified keys and values
- # but only if we haven't already byteified it
- if isinstance(data, dict) and not ignore_dicts:
- return {byteify(key, ignore_dicts=ignore_dicts): byteify(value, ignore_dicts=ignore_dicts)
- for key, value in data.iteritems()}
- # if it's anything else, return it in its original form
- return data
+ # possibly change file ownership
+ if group_id is None:
+ group_id = user_id
+ if user_id is not None:
+ os.chown(file_path, user_id, group_id)
def dict_to_json_dict(record):
@@ -113,8 +105,8 @@ def get_intel_pci(nic_slot=None, nic_ports=None):
if nic_slot and nic_ports:
dmidecode = subprocess.check_output(['dmidecode', '-t', 'slot'])
- regex = r"(?<=SlotID:%s).*?(....:..:..\..)" % nic_slot
- match = re.search(regex, dmidecode, flags=re.DOTALL)
+ regex = r"(?<=SlotID:{}).*?(....:..:..\..)".format(nic_slot)
+ match = re.search(regex, dmidecode.decode('utf-8'), flags=re.DOTALL)
if not match:
return None
@@ -135,47 +127,41 @@ def get_intel_pci(nic_slot=None, nic_ports=None):
trex_base_dir = '/opt/trex'
contents = os.listdir(trex_base_dir)
trex_dir = os.path.join(trex_base_dir, contents[0])
- process = subprocess.Popen(['python', 'dpdk_setup_ports.py', '-s'],
- cwd=trex_dir,
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE)
- devices, _ = process.communicate()
+ with subprocess.Popen(['python', 'dpdk_setup_ports.py', '-s'],
+ cwd=trex_dir,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE) as process:
+ devices, _ = process.communicate()
except Exception:
devices = ''
for driver in ['i40e', 'ixgbe']:
- matches = re.findall(regex.format(hx=hx, driver=driver), devices)
+ matches = re.findall(regex.format(hx=hx, driver=driver), devices.decode("utf-8"))
if not matches:
continue
matches.sort()
+ device_list = list(x[0].split('.')[0] for x in matches)
+ device_ports_list = {i: {'ports': device_list.count(i)} for i in device_list}
for port in matches:
intf_name = glob.glob("/sys/bus/pci/devices/%s/net/*" % port[0])
- if not intf_name:
- # Interface is not bind to kernel driver, so take it
- pcis.append(port[1])
- else:
+ if intf_name:
intf_name = intf_name[0][intf_name[0].rfind('/') + 1:]
- process = subprocess.Popen(['ip', '-o', '-d', 'link', 'show', intf_name],
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE)
- intf_info, _ = process.communicate()
- if not re.search('team_slave|bond_slave', intf_info):
- pcis.append(port[1])
-
+ with subprocess.Popen(['ip', '-o', '-d', 'link', 'show', intf_name],
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE) as process:
+ intf_info, _ = process.communicate()
+ if re.search('team_slave|bond_slave', intf_info.decode("utf-8")):
+ device_ports_list[port[0].split('.')[0]]['busy'] = True
+ for port in matches:
+ if not device_ports_list[port[0].split('.')[0]].get('busy'):
+ pcis.append(port[1])
if len(pcis) == 2:
break
return pcis
-multiplier_map = {
- 'K': 1000,
- 'M': 1000000,
- 'G': 1000000000
-}
-
-
def parse_flow_count(flow_count):
flow_count = str(flow_count)
input_fc = flow_count
@@ -187,13 +173,14 @@ def parse_flow_count(flow_count):
try:
flow_count = int(flow_count)
except ValueError:
- raise Exception("Unknown flow count format '{}'".format(input_fc))
+ raise Exception("Unknown flow count format '{}'".format(input_fc)) from ValueError
return flow_count * multiplier
def cast_integer(value):
- return int(value) if not isnan(value) else value
+ # force 0 value if NaN value from TRex to avoid error in JSON result parsing
+ return int(value) if not isnan(value) else 0
class RunLock(object):
@@ -210,8 +197,8 @@ class RunLock(object):
try:
self._fd = os.open(self._path, os.O_CREAT)
fcntl.flock(self._fd, fcntl.LOCK_EX | fcntl.LOCK_NB)
- except (OSError, IOError):
- raise Exception('Other NFVbench process is running. Please wait')
+ except (OSError, IOError) as e:
+ raise Exception('Other NFVbench process is running. Please wait') from e
def __exit__(self, *args):
fcntl.flock(self._fd, fcntl.LOCK_UN)
@@ -223,3 +210,82 @@ class RunLock(object):
os.unlink(self._path)
except (OSError, IOError):
pass
+
+
+def get_divisors(n):
+ for i in range(1, int(n / 2) + 1):
+ if n % i == 0:
+ yield i
+ yield n
+
+
+def lcm(a, b):
+ """
+ Calculate the maximum possible value for both IP and ports,
+ eventually for maximum possible flow.
+ """
+ if a != 0 and b != 0:
+ lcm_value = a * b // gcd(a, b)
+ return lcm_value
+ raise TypeError(" IP size or port range can't be zero !")
+
+
+def find_tuples_equal_to_lcm_value(a, b, lcm_value):
+ """
+ Find numbers from two list matching a LCM value.
+ """
+ for x in a:
+ for y in b:
+ if lcm(x, y) == lcm_value:
+ yield (x, y)
+
+
+def find_max_size(max_size, tuples, flow):
+ if tuples:
+ if max_size > tuples[-1][0]:
+ max_size = tuples[-1][0]
+ return int(max_size)
+ if max_size > tuples[-1][1]:
+ max_size = tuples[-1][1]
+ return int(max_size)
+
+ for i in range(max_size, 1, -1):
+ if flow % i == 0:
+ return int(i)
+ return 1
+
+
+def delete_server(nova_client, server):
+ try:
+ LOG.info('Deleting instance %s...', server.name)
+ nova_client.servers.delete(server.id)
+ except Exception:
+ LOG.exception("Instance %s deletion failed", server.name)
+
+
+def instance_exists(nova_client, server):
+ try:
+ nova_client.servers.get(server.id)
+ except NotFound:
+ return False
+ return True
+
+
+def waiting_servers_deletion(nova_client, servers):
+ LOG.info(' Waiting for %d instances to be fully deleted...', len(servers))
+ retry_count = 15 + len(servers) * 5
+ while True:
+ retry_count -= 1
+ servers = [server for server in servers if instance_exists(nova_client, server)]
+ if not servers:
+ break
+
+ if retry_count:
+ LOG.info(' %d yet to be deleted by Nova, retries left=%d...',
+ len(servers), retry_count)
+ time.sleep(2)
+ else:
+ LOG.warning(
+ ' instance deletion verification time-out: %d still not deleted',
+ len(servers))
+ break
diff --git a/nfvbenchvm/README.rst b/nfvbenchvm/README.rst
deleted file mode 100644
index 1bf0bbf..0000000
--- a/nfvbenchvm/README.rst
+++ /dev/null
@@ -1,86 +0,0 @@
-NFVBENCH VM IMAGE FOR OPENSTACK
-+++++++++++++++++++++++++++++++
-
-This repo will build a centos 7 image with testpmd and VPP installed.
-The VM will come with a pre-canned user/password: nfvbench/nfvbench
-
-BUILD INSTRUCTIONS
-==================
-
-Pre-requisites
---------------
-- must run on Linux
-- the following packages must be installed prior to using this script:
- - git
- - qemu-utils
- - kpartx
-
-Build the image
----------------
-- cd dib
-- update the version number for the image (if needed) by modifying __version__ in build-image.sh
-- setup your http_proxy if needed
-- bash build-image.sh
-
-IMAGE INSTANCE AND CONFIG
-=========================
-
-Interface Requirements
-----------------------
-The instance must be launched using OpenStack with 2 network interfaces.
-For best performance, it should use a flavor with:
-
-- 2 vCPU
-- 4 GB RAM
-- cpu pinning set to exclusive
-
-Auto-configuration
-------------------
-nfvbench VM will automatically find the two virtual interfaces to use, and use the forwarder specifed in the config file.
-
-In the case testpmd is used, testpmd will be launched with mac forwarding mode where the destination macs rewritten according to the config file.
-
-In the case VPP is used, VPP will set up a L3 router, and forwarding traffic from one port to the other.
-
-nfvbenchvm Config
------------------
-nfvbenchvm config file is located at ``/etc/nfvbenchvm.conf``.
-
-.. code-block:: bash
-
- FORWARDER=testpmd
- INTF_MAC1=FA:16:3E:A2:30:41
- INTF_MAC2=FA:16:3E:10:DA:10
- TG_MAC1=00:10:94:00:0A:00
- TG_MAC2=00:11:94:00:0A:00
- VNF_GATEWAY1_CIDR=1.1.0.2/8
- VNF_GATEWAY2_CIDR=2.2.0.2/8
- TG_NET1=10.0.0.0/8
- TG_NET2=20.0.0.0/8
- TG_GATEWAY1_IP=1.1.0.100
- TG_GATEWAY2_IP=2.2.0.100
-
-
-Launching nfvbenchvm VM
------------------------
-
-Normally this image will be used together with NFVBench, and the required configurations will be automatically generated and pushed to VM by NFVBench. If launched manually, no forwarder will be run. Users will have the full control to run either testpmd or VPP via VNC console.
-
-To check if testpmd is running, you can run this command in VNC console:
-
-.. code-block:: bash
-
- sudo screen -r testpmd
-
-To check if VPP is running, you can run this command in VNC console:
-
-.. code-block:: bash
-
- service vpp status
-
-
-Hardcoded Username and Password
---------------------------------
-- Username: nfvbench
-- Password: nfvbench
-
diff --git a/nfvbenchvm/dib/build-image.sh b/nfvbenchvm/dib/build-image.sh
index 588e454..c320192 100755
--- a/nfvbenchvm/dib/build-image.sh
+++ b/nfvbenchvm/dib/build-image.sh
@@ -1,100 +1,247 @@
#!/bin/bash
#
-# A shell script to build the VPP VM image using diskinage-builder
+# A shell script to build the VPP VM image or NFVbench+TRex VM image using diskinage-builder
#
# The following packages must be installed prior to using this script:
-# sudo apt-get -y install python-virtualenv qemu-utils kpartx
+# Ubuntu: sudo apt-get -y install python3 python3-venv qemu-utils kpartx
+# CentOS: sudo yum install -y python3 qemu-img kpartx
+
+# Stop on error (see https://wizardzines.com/comics/bash-errors/)
+set -euo pipefail
+
+DEBUG=no
+verify_only=0
+build_generator=0
+build_loopvm=0
+__prefix__=""
+
+# Artifact URL
+gs_url=artifacts.opnfv.org/nfvbench/images
+
+# image version number
+__loopvm_version__=0.16
+__generator_version__=0.15
+loopvm_image_name=nfvbenchvm_centos-$__loopvm_version__
+generator_image_name=nfvbenchvm_centos-generator-$__generator_version__
+
+# Default values for nfvbenchvm dib element variables
+export DIB_NFVBENCH_CODE_ORIGIN=opnfv-gerrit
+
+
+# ----------------------------------------------------------------------------
+# Parse command line options and configure the script
+# ----------------------------------------------------------------------------
usage() {
- echo "Usage: $0 [-v]"
- echo " -v verify only (build but do not push to google storage)"
+ cat <<EOF
+$(basename $0) - build NFVbench VM images
+Usage:
+ $(basename $0) [OPTIONS]
+
+OPTIONS
+ -l: build NFVbench loop VM image
+ -g: build NFVbench generator image
+ -v: verify only (build but do not push to google storage)
+ -s: use local nfvbench code instead of cloning from OPNFV gerrit
+ (only relevant for NFVbench generator image)
+
+ -t: enable debug trace (set -x + DIB_DEBUG_TRACE=1)
+ -d: start debug shell in image chroot in case of build error
+ -h: show this help message
+EOF
exit 1
}
-# Takes only 1 optional argument
-if [ $# -gt 1 ]; then
- usage
+while getopts ":lgvstdh" opt; do
+ case $opt in
+ l)
+ build_loopvm=1
+ ;;
+ g)
+ build_generator=1
+ ;;
+ v)
+ verify_only=1
+ ;;
+ s)
+ export DIB_NFVBENCH_CODE_ORIGIN=static
+ ;;
+ t)
+ set -x
+ export DIB_DEBUG_TRACE=1
+ ;;
+ d)
+ DEBUG=yes
+ ;;
+ h)
+ usage
+ exit 0
+ ;;
+ ?)
+ usage
+ exit 1
+ ;;
+ esac
+done
+
+
+# Build all VM images if the image to build is not specified on the CLI
+if [[ $build_generator -eq 0 ]] && [[ $build_loopvm -eq 0 ]]; then
+ build_generator=1
+ build_loopvm=1
fi
-verify_only=0
-if [ $# -eq 1 ]; then
- if [ $1 = "-v" ]; then
- verify_only=1
- else
- usage
- fi
+if [[ "${DIB_NFVBENCH_CODE_ORIGIN}" == "static" ]] && [[ $build_generator -eq 0 ]]; then
+ echo "Error: option -s is only relevant to the build of the generator image"
+ exit 1
fi
-set -e
-# Artifact URL
-gs_url=artifacts.opnfv.org/nfvbench/images
-# image version number
-__version__=0.9
-image_name=nfvbenchvm_centos-$__version__
-
-# if image exists skip building
-echo "Checking if image exists in google storage..."
-if command -v gsutil >/dev/null; then
- if gsutil -q stat gs://$gs_url/$image_name.qcow2; then
- echo "Image already exists at http://$gs_url/$image_name.qcow2"
- echo "Build is skipped"
- exit 0
- fi
- echo "Image does not exist in google storage, starting build..."
- echo
-else
- echo "Cannot check image availability in OPNFV artifact repository (gsutil not available)"
-fi
+# ----------------------------------------------------------------------------
+# Copy local nfvbench code to elements/nfvbenchvm/static/opt/nfvbench
+# ----------------------------------------------------------------------------
+
+function copy_local_nfvbench_code_to_static_dir {
+ echo "Copy local nfvbench code to elements/nfvbenchvm/static/opt"
+ # Create elements/nfvbenchvm/static/opt/ directory if it does not exist and
+ # move there
+ pushd $(dirname $0)/elements/nfvbenchvm/static
+ [ -d opt ] || mkdir opt
+ cd opt
+
+ # Remove nfvbench code if it is already there
+ [ -d nfvbench ] && rm -rf nfvbench
-# check if image is already built locally
-if [ -f $image_name.qcow2 ]; then
- echo "Image $image_name.qcow2 already exists locally"
-else
+ # Use git to "copy" the local nfvbench code.
+ # This will include all the committed changes of the current branch.
+ git clone ../../../../../.. nfvbench
- # install diskimage-builder
- if [ -d dib-venv ]; then
- . dib-venv/bin/activate
+ # Go back to the current directory when this function was called
+ popd
+}
+
+
+# ----------------------------------------------------------------------------
+# Configure and start the nfvbenchvm image build
+# ----------------------------------------------------------------------------
+
+function build_image {
+ # if image exists skip building
+ echo "Checking if image exists in google storage..."
+ if command -v gsutil >/dev/null; then
+ if gsutil -q stat gs://$gs_url/$1.qcow2; then
+ echo "Image already exists at https://$gs_url/$1.qcow2"
+ echo "Build is skipped"
+ exit 0
+ fi
+ echo "Image does not exist in google storage, starting build..."
+ echo
else
- virtualenv dib-venv
- . dib-venv/bin/activate
- pip install diskimage-builder
+ echo "Cannot check image availability in OPNFV artifact repository (gsutil not available)"
fi
- # Add nfvbenchvm_centos elements directory to the DIB elements path
- export ELEMENTS_PATH=`pwd`/elements
+ # check if image is already built locally
+ if [ -f $1.qcow2 ]; then
+ echo "Image $1.qcow2 already exists locally"
+ else
+ # install diskimage-builder
+ if [ -d dib-venv ]; then
+ . dib-venv/bin/activate
+ else
+ python3 -m venv dib-venv
+ . dib-venv/bin/activate
+ pip install diskimage-builder==3.16.0
+ fi
+
+ # Add nfvbenchvm_centos elements directory to the DIB elements path
+ export ELEMENTS_PATH=`pwd`/elements
+
+ # canned user/password for direct login
+ export DIB_DEV_USER_USERNAME=nfvbench
+ export DIB_DEV_USER_PASSWORD=nfvbench
+ export DIB_DEV_USER_PWDLESS_SUDO=Y
+
+ # Set the data sources to have ConfigDrive only
+ export DIB_CLOUD_INIT_DATASOURCES="ConfigDrive"
+
+ # Configure VPP REPO
+ export DIB_YUM_REPO_CONF=$ELEMENTS_PATH/nfvbenchvm/fdio-release.repo
+
+ # Use ELRepo to have latest kernel
+ # only for loop vm image
+ if [ $1 = $loopvm_image_name ]; then
+ export DIB_USE_ELREPO_KERNEL=True
+ export DIB_DEV_IMAGE=loopvm
+ else
+ export DIB_USE_ELREPO_KERNEL=False
+ export DIB_DEV_IMAGE=generator
+ # get current git branch to build image with current code
+ export GIT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
+ # retrieve TREX_VER from Dockerfile
+ export TREX_VER=$(awk '/ENV TREX_VER/ {print $3}' ../../docker/Dockerfile | sed 's/"//g' | sed 's/\r//g')
+ fi
+
+ # Specify CentOS version
+ export DIB_RELEASE=7
+
+ # Debug on error: if an error occurs during the build, disk-image-create
+ # will drop us in a Bash inside the chroot, and we will be able to inspect
+ # the current state of the image.
+ if [[ "${DEBUG}" == "yes" ]]; then
+ export break=after-error
+ fi
+
+ echo "Building $1.qcow2..."
+ time disk-image-create -o $1 centos nfvbenchvm
+ fi
- # canned user/password for direct login
- export DIB_DEV_USER_USERNAME=nfvbench
- export DIB_DEV_USER_PASSWORD=nfvbench
- export DIB_DEV_USER_PWDLESS_SUDO=Y
+ ls -l $1.qcow2
- # Set the data sources to have ConfigDrive only
- export DIB_CLOUD_INIT_DATASOURCES="ConfigDrive"
+ if [ $verify_only -eq 1 ]; then
+ echo "Image verification SUCCESS"
+ echo "NO upload to google storage (-v)"
+ else
+ if command -v gsutil >/dev/null; then
+ echo "Uploading $1.qcow2..."
+ gsutil cp $1.qcow2 gs://$gs_url/$1.qcow2
+ echo "You can access to image at https://$gs_url/$1.qcow2"
+ else
+ echo "Cannot upload new image to the OPNFV artifact repository (gsutil not available)"
+ exit 1
+ fi
+ fi
+}
- # Configure VPP REPO
- export DIB_YUM_REPO_CONF=$ELEMENTS_PATH/nfvbenchvm/fdio-release.repo
- # Use ELRepo to have latest kernel
- export DIB_USE_ELREPO_KERNEL=True
+# ----------------------------------------------------------------------------
+# Main program
+# ----------------------------------------------------------------------------
- echo "Building $image_name.qcow2..."
- time disk-image-create -o $image_name centos7 nfvbenchvm
+if [ $build_loopvm -eq 1 ]; then
+ echo "Build loop VM image"
+ build_image $loopvm_image_name
fi
-ls -l $image_name.qcow2
-
-
-if [ $verify_only -eq 1 ]; then
- echo "Image verification SUCCESS"
- echo "NO upload to google storage (-v)"
-else
- if command -v gsutil >/dev/null; then
- echo "Uploading $image_name.qcow2..."
- gsutil cp $image_name.qcow2 gs://$gs_url/$image_name.qcow2
- echo "You can access to image at http://$gs_url/$image_name.qcow2"
- else
- echo "Cannot upload new image to the OPNFV artifact repository (gsutil not available)"
- exit 1
+if [ $build_generator -eq 1 ]; then
+ echo "Build generator image"
+
+ if [[ "${DIB_NFVBENCH_CODE_ORIGIN}" == "static" ]]; then
+ echo "Use local nfvbench code"
+ copy_local_nfvbench_code_to_static_dir
+
+ # Append nfvbench version number to the image name:
+ # during development, this is useful to distinguish the development
+ # images from the latest published image.
+ #
+ # To avoid confusion, we use the same versioning as nfvbench (see
+ # nfvbench/__init__.py), although "git describe" would give us a better
+ # number with respect to uniqueness. So we will typically get something
+ # like "5.0.4.dev31" where "5.0.4" is the latest annotated tag ("5.0.3")
+ # plus one and where dev31 indicates the number of commits (31) since
+ # that tag.
+ nfvbench_version=$(python -c 'import pbr.version; print(pbr.version.VersionInfo("nfvbench").version_string_with_vcs())')
+ generator_image_name="${generator_image_name}-${nfvbench_version}"
fi
+
+ build_image $generator_image_name
fi
diff --git a/nfvbenchvm/dib/elements/nfvbenchvm/element-deps b/nfvbenchvm/dib/elements/nfvbenchvm/element-deps
index c6be0aa..7fd8e5b 100644
--- a/nfvbenchvm/dib/elements/nfvbenchvm/element-deps
+++ b/nfvbenchvm/dib/elements/nfvbenchvm/element-deps
@@ -1,4 +1,5 @@
vm
+block-device-mbr
cloud-init-datasources
install-static
package-installs
diff --git a/nfvbenchvm/dib/elements/nfvbenchvm/fdio-release.repo b/nfvbenchvm/dib/elements/nfvbenchvm/fdio-release.repo
index 3ad12fb..6b980c1 100644
--- a/nfvbenchvm/dib/elements/nfvbenchvm/fdio-release.repo
+++ b/nfvbenchvm/dib/elements/nfvbenchvm/fdio-release.repo
@@ -1,5 +1,11 @@
[fdio-release]
-name=fd.io release branch latest merge
-baseurl=https://nexus.fd.io/content/repositories/fd.io.stable.1710.centos7/
-enabled=1
+name=FD.io release 17.10 binary RPM package repository for CentOS 7
+baseurl=https://packagecloud.io/fdio/1710/el/7/$basearch
+repo_gpgcheck=1
gpgcheck=0
+enabled=1
+gpgkey=https://packagecloud.io/fdio/1710/gpgkey
+sslverify=1
+sslcacert=/etc/pki/tls/certs/ca-bundle.crt
+metadata_expire=300
+
diff --git a/nfvbenchvm/dib/elements/nfvbenchvm/finalise.d/51-add-cpu-isolation b/nfvbenchvm/dib/elements/nfvbenchvm/finalise.d/51-add-cpu-isolation
index eab5817..e9cf3c5 100755
--- a/nfvbenchvm/dib/elements/nfvbenchvm/finalise.d/51-add-cpu-isolation
+++ b/nfvbenchvm/dib/elements/nfvbenchvm/finalise.d/51-add-cpu-isolation
@@ -1,4 +1,12 @@
#!/bin/bash
-grubby --update-kernel=ALL --args="isolcpus=1 rcu_nocbs=1 nohz=on nohz_full=1 nmi_watchdog=0"
-grubby --update-kernel=ALL --args="default_hugepagesz=1G hugepagesz=1G hugepages=1"
+if [ ${DIB_DEBUG_TRACE:-1} -gt 0 ]; then
+ set -x
+fi
+
+# Stop on error
+set -euo pipefail
+
+grubby --update-kernel=ALL --args="isolcpus=1-7 rcu_nocbs=1 nohz=on nohz_full=1 nmi_watchdog=0"
+grubby --update-kernel=ALL --args="default_hugepagesz=1G hugepagesz=1G hugepages=4"
+grubby --update-kernel=ALL --args="intel_iommu=on iommu=pt"
diff --git a/nfvbenchvm/dib/elements/nfvbenchvm/finalise.d/52-change-resolution b/nfvbenchvm/dib/elements/nfvbenchvm/finalise.d/52-change-resolution
index 26f2f6a..d01b907 100755
--- a/nfvbenchvm/dib/elements/nfvbenchvm/finalise.d/52-change-resolution
+++ b/nfvbenchvm/dib/elements/nfvbenchvm/finalise.d/52-change-resolution
@@ -1,3 +1,10 @@
#!/bin/bash
+if [ ${DIB_DEBUG_TRACE:-1} -gt 0 ]; then
+ set -x
+fi
+
+# Stop on error
+set -euo pipefail
+
grubby --update-kernel=ALL --args="vga=792"
diff --git a/nfvbenchvm/dib/elements/nfvbenchvm/finalise.d/53-boot-from-new-kernel b/nfvbenchvm/dib/elements/nfvbenchvm/finalise.d/53-boot-from-new-kernel
index 6607b0b..e461801 100755
--- a/nfvbenchvm/dib/elements/nfvbenchvm/finalise.d/53-boot-from-new-kernel
+++ b/nfvbenchvm/dib/elements/nfvbenchvm/finalise.d/53-boot-from-new-kernel
@@ -1,3 +1,10 @@
#!/bin/bash
+if [ ${DIB_DEBUG_TRACE:-1} -gt 0 ]; then
+ set -x
+fi
+
+# Stop on error
+set -euo pipefail
+
grubby --set-default-index=0
diff --git a/nfvbenchvm/dib/elements/nfvbenchvm/package-installs.yaml b/nfvbenchvm/dib/elements/nfvbenchvm/package-installs.yaml
index e3184c7..6f86027 100644
--- a/nfvbenchvm/dib/elements/nfvbenchvm/package-installs.yaml
+++ b/nfvbenchvm/dib/elements/nfvbenchvm/package-installs.yaml
@@ -4,12 +4,18 @@ tuna:
wget:
screen:
telnet:
-python-devel:
libyaml-devel:
numactl-libs:
numactl-devel:
vpp:
vpp-plugins:
+vpp-config:
kernel-firmware:
kernel-headers:
kernel-devel:
+openssh-server:
+dpdk-tools:
+git:
+python3-dev:
+libpython3.6-dev:
+python3-pip:
diff --git a/nfvbenchvm/dib/elements/nfvbenchvm/post-install.d/01-update-kernel b/nfvbenchvm/dib/elements/nfvbenchvm/post-install.d/01-update-kernel
index 8094006..0c32b5f 100755
--- a/nfvbenchvm/dib/elements/nfvbenchvm/post-install.d/01-update-kernel
+++ b/nfvbenchvm/dib/elements/nfvbenchvm/post-install.d/01-update-kernel
@@ -1,5 +1,12 @@
#!/bin/bash
+if [ ${DIB_DEBUG_TRACE:-1} -gt 0 ]; then
+ set -x
+fi
+
+# Stop on error
+set -euo pipefail
+
if [ $DIB_USE_ELREPO_KERNEL != "True" ]; then
exit 0
fi
diff --git a/nfvbenchvm/dib/elements/nfvbenchvm/post-install.d/02-pip-package b/nfvbenchvm/dib/elements/nfvbenchvm/post-install.d/02-pip-package
new file mode 100755
index 0000000..ee7c5f2
--- /dev/null
+++ b/nfvbenchvm/dib/elements/nfvbenchvm/post-install.d/02-pip-package
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+if [ ${DIB_DEBUG_TRACE:-1} -gt 0 ]; then
+ set -x
+fi
+
+# Stop on error
+set -euo pipefail
+
+python3 -m pip install --upgrade pip
+python3 -m pip install setuptools wheel pbr
+python3 -m pip install pyyaml
diff --git a/nfvbenchvm/dib/elements/nfvbenchvm/post-install.d/02-testpmd-script b/nfvbenchvm/dib/elements/nfvbenchvm/post-install.d/02-testpmd-script
deleted file mode 100755
index 6f133d1..0000000
--- a/nfvbenchvm/dib/elements/nfvbenchvm/post-install.d/02-testpmd-script
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/bash
-
-DPDK=dpdk-18.02
-DPDK_UNTAR=dpdk-18.02
-
-# pick up the kernel version for the target image
-kernel_version=`ls -t /lib/modules | awk 'NR==1 {print}'`
-
-mkdir dpdk
-wget http://fast.dpdk.org/rel/$DPDK.tar.xz
-tar xfJ $DPDK.tar.xz
-cd $DPDK_UNTAR
-
-export RTE_KERNELDIR=/lib/modules/$kernel_version/build
-export ARCH=x86
-make -j4 install T=x86_64-native-linuxapp-gcc
-
-cp usertools/dpdk-devbind.py ../dpdk
-# cp tools/dpdk_nic_bind.py ../dpdk/dpdk-devbind.py
-cp x86_64-native-linuxapp-gcc/app/testpmd ../dpdk
-cp x86_64-native-linuxapp-gcc/kmod/igb_uio.ko ../dpdk
-echo "set promisc all off" > /dpdk/testpmd_cmd.txt
-
-cd ..
-rm -f $DPDK.tar.xz
-rm -rf $DPDK_UNTAR
diff --git a/nfvbenchvm/dib/elements/nfvbenchvm/post-install.d/03-add-execute-attribute b/nfvbenchvm/dib/elements/nfvbenchvm/post-install.d/03-add-execute-attribute
deleted file mode 100755
index a13ab95..0000000
--- a/nfvbenchvm/dib/elements/nfvbenchvm/post-install.d/03-add-execute-attribute
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/bash
-
-chmod +x /etc/rc.d/rc.local
-chmod +x /etc/sysconfig/network-scripts/ifcfg-eth0
diff --git a/nfvbenchvm/dib/elements/nfvbenchvm/post-install.d/03-copy-rc-local b/nfvbenchvm/dib/elements/nfvbenchvm/post-install.d/03-copy-rc-local
new file mode 100755
index 0000000..4a8e66b
--- /dev/null
+++ b/nfvbenchvm/dib/elements/nfvbenchvm/post-install.d/03-copy-rc-local
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+if [ ${DIB_DEBUG_TRACE:-1} -gt 0 ]; then
+ set -x
+fi
+
+# Stop on error
+set -euo pipefail
+
+# set accurate rc.local file corresponding to current image built
+if [ $DIB_DEV_IMAGE = "loopvm" ]; then
+ mv /etc/rc.d/rc.local.loopvm /etc/rc.d/rc.local
+else
+ mv /etc/rc.d/rc.local.generator /etc/rc.d/rc.local
+fi
diff --git a/nfvbenchvm/dib/elements/nfvbenchvm/post-install.d/04-add-execute-attribute b/nfvbenchvm/dib/elements/nfvbenchvm/post-install.d/04-add-execute-attribute
new file mode 100755
index 0000000..52aed8a
--- /dev/null
+++ b/nfvbenchvm/dib/elements/nfvbenchvm/post-install.d/04-add-execute-attribute
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+if [ ${DIB_DEBUG_TRACE:-1} -gt 0 ]; then
+ set -x
+fi
+
+# Stop on error
+set -euo pipefail
+
+chmod +x /etc/rc.d/rc.local
+chmod +x /etc/sysconfig/network-scripts/ifcfg-eth0
+chmod +x /etc/profile.d/nfvbench.sh
+chmod +x /nfvbench/configure-nfvbench.sh
+chmod +x /nfvbench/start-nfvbench.sh
diff --git a/nfvbenchvm/dib/elements/nfvbenchvm/post-install.d/50-pip-package b/nfvbenchvm/dib/elements/nfvbenchvm/post-install.d/50-pip-package
deleted file mode 100755
index 2d74ff5..0000000
--- a/nfvbenchvm/dib/elements/nfvbenchvm/post-install.d/50-pip-package
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/bash
-
-cd /tmp
-wget https://bootstrap.pypa.io/get-pip.py
-python get-pip.py
-
-pip install setuptools wheel
-pip install pyyaml
diff --git a/nfvbenchvm/dib/elements/nfvbenchvm/post-install.d/51-cloudcfg-edit b/nfvbenchvm/dib/elements/nfvbenchvm/post-install.d/51-cloudcfg-edit
index dc51030..1a0dec9 100755
--- a/nfvbenchvm/dib/elements/nfvbenchvm/post-install.d/51-cloudcfg-edit
+++ b/nfvbenchvm/dib/elements/nfvbenchvm/post-install.d/51-cloudcfg-edit
@@ -7,6 +7,9 @@ user = "cloud-user"
with open(cloudcfg) as f:
cfg = yaml.safe_load(f)
+# allow SSH password auth
+cfg['ssh_pwauth'] = "1"
+
try:
if cfg['system_info']['default_user']['name']:
synver = "2"
diff --git a/nfvbenchvm/dib/elements/nfvbenchvm/post-install.d/52-nfvbench-script b/nfvbenchvm/dib/elements/nfvbenchvm/post-install.d/52-nfvbench-script
new file mode 100755
index 0000000..4edc493
--- /dev/null
+++ b/nfvbenchvm/dib/elements/nfvbenchvm/post-install.d/52-nfvbench-script
@@ -0,0 +1,56 @@
+#!/bin/bash
+
+if [ ${DIB_DEBUG_TRACE:-1} -gt 0 ]; then
+ set -x
+fi
+
+# Make sure the disk image build fails if nfvbench installation fails
+set -euo pipefail
+
+if [ $DIB_DEV_IMAGE != "generator" ]; then
+ exit 0
+fi
+
+# TRex installation
+mkdir -p /opt/trex
+mkdir /var/log/nfvbench
+
+wget --no-cache --no-check-certificate https://trex-tgn.cisco.com/trex/release/$TREX_VER.tar.gz
+tar xzf $TREX_VER.tar.gz -C /opt/trex
+rm -f /$TREX_VER.tar.gz
+rm -f /opt/trex/$TREX_VER/trex_client_$TREX_VER.tar.gz
+cp -a /opt/trex/$TREX_VER/automation/trex_control_plane/interactive/trex /usr/local/lib/python3.6/site-packages/
+rm -rf /opt/trex/$TREX_VER/automation/trex_control_plane/interactive/trex
+
+# NFVbench installation
+cd /opt
+if [[ "${DIB_NFVBENCH_CODE_ORIGIN}" == "static" ]]; then
+ # nfvbench code has been copied by the install-static element to
+ # /opt/nfvbench without the .git/ directory. But pip will need that .git/
+ # directory to compute nfvbench version, so will now finish the incomplete
+ # job of install-static:
+ STATIC_NFVBENCH_CODE="$(dirname $0)/../static/opt/nfvbench"
+ [ -d "${STATIC_NFVBENCH_CODE}" ] || {
+ echo "Error: directory ${STATIC_NFVBENCH_CODE} missing."
+ echo " You requested a build from local nfvbench code with"
+ echo " DIB_NFVBENCH_CODE_ORIGIN=static, but you likely forgot"
+ echo " to clone nfvbench code in elements/nfvbenchvm/static/opt/nfvbench"
+ exit 1
+ }
+ rsync -lr "${STATIC_NFVBENCH_CODE}"/ /opt/nfvbench/
+else
+ git clone https://gerrit.opnfv.org/gerrit/nfvbench
+fi
+cd nfvbench/
+python3 -m pip install . --use-deprecated=legacy-resolver
+cp xtesting/testcases.yaml /usr/local/lib/python3.6/site-packages/xtesting/ci/testcases.yaml
+python3 ./docker/cleanup_generators.py
+rm -rf /opt/nfvbench/.git
+rm -rf /opt/nfvbench/nfvbench
+rm -rf /opt/nfvbench/behave_tests
+# symlink to NFVbench sources
+ln -s /usr/local/lib/python3.6/site-packages/nfvbench /opt/nfvbench/nfvbench
+ln -s /usr/local/lib/python3.6/site-packages/behave_tests /opt/nfvbench/behave_tests
+# persist env variables
+echo "export TREX_VER=\"$TREX_VER\"" >> /etc/profile.d/nfvbench.sh
+echo "export TREX_EXT_LIBS=\"/opt/trex/$TREX_VER/external_libs\"" >> /etc/profile.d/nfvbench.sh
diff --git a/nfvbenchvm/dib/elements/nfvbenchvm/post-install.d/53-sshd-script b/nfvbenchvm/dib/elements/nfvbenchvm/post-install.d/53-sshd-script
new file mode 100755
index 0000000..0c7dfd5
--- /dev/null
+++ b/nfvbenchvm/dib/elements/nfvbenchvm/post-install.d/53-sshd-script
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+if [ ${DIB_DEBUG_TRACE:-1} -gt 0 ]; then
+ set -x
+fi
+
+# Stop on error
+set -euo pipefail
+
+# Set UseDNS no value in sshd_config to reduce time to connect
+echo "UseDNS no" >> /etc/ssh/sshd_config
diff --git a/nfvbenchvm/dib/elements/nfvbenchvm/post-install.d/99-cleanup b/nfvbenchvm/dib/elements/nfvbenchvm/post-install.d/99-cleanup
index 14e9f27..dbb7342 100755
--- a/nfvbenchvm/dib/elements/nfvbenchvm/post-install.d/99-cleanup
+++ b/nfvbenchvm/dib/elements/nfvbenchvm/post-install.d/99-cleanup
@@ -1,3 +1,10 @@
#!/bin/bash
-yum erase -y python-devel libyaml-devel numactl-devel kernel-devel kernel-headers kernel-lt-headers kernel-lt-devel gcc
+if [ ${DIB_DEBUG_TRACE:-1} -gt 0 ]; then
+ set -x
+fi
+
+# Stop on error
+set -euo pipefail
+
+yum erase -y python-devel libyaml-devel numactl-devel kernel-devel kernel-headers kernel-lt-headers kernel-lt-devel gcc git python3-dev libpython3.6-dev
diff --git a/nfvbenchvm/dib/elements/nfvbenchvm/static/etc/modprobe.d/vfio.conf b/nfvbenchvm/dib/elements/nfvbenchvm/static/etc/modprobe.d/vfio.conf
new file mode 100644
index 0000000..f32633f
--- /dev/null
+++ b/nfvbenchvm/dib/elements/nfvbenchvm/static/etc/modprobe.d/vfio.conf
@@ -0,0 +1 @@
+options vfio enable_unsafe_noiommu_mode=1
diff --git a/nfvbenchvm/dib/elements/nfvbenchvm/static/etc/modules-load.d/vfio-pci.conf b/nfvbenchvm/dib/elements/nfvbenchvm/static/etc/modules-load.d/vfio-pci.conf
new file mode 100644
index 0000000..7ce4214
--- /dev/null
+++ b/nfvbenchvm/dib/elements/nfvbenchvm/static/etc/modules-load.d/vfio-pci.conf
@@ -0,0 +1 @@
+vfio-pci
diff --git a/nfvbenchvm/dib/elements/nfvbenchvm/static/etc/openstack/clouds.yaml b/nfvbenchvm/dib/elements/nfvbenchvm/static/etc/openstack/clouds.yaml
new file mode 100644
index 0000000..cb1130f
--- /dev/null
+++ b/nfvbenchvm/dib/elements/nfvbenchvm/static/etc/openstack/clouds.yaml
@@ -0,0 +1 @@
+# clouds.yaml file \ No newline at end of file
diff --git a/nfvbenchvm/dib/elements/nfvbenchvm/static/etc/profile.d/nfvbench.sh b/nfvbenchvm/dib/elements/nfvbenchvm/static/etc/profile.d/nfvbench.sh
new file mode 100644
index 0000000..a9bf588
--- /dev/null
+++ b/nfvbenchvm/dib/elements/nfvbenchvm/static/etc/profile.d/nfvbench.sh
@@ -0,0 +1 @@
+#!/bin/bash
diff --git a/nfvbenchvm/dib/elements/nfvbenchvm/static/etc/rc.d/rc.local.generator b/nfvbenchvm/dib/elements/nfvbenchvm/static/etc/rc.d/rc.local.generator
new file mode 100644
index 0000000..9ac23a3
--- /dev/null
+++ b/nfvbenchvm/dib/elements/nfvbenchvm/static/etc/rc.d/rc.local.generator
@@ -0,0 +1,122 @@
+#!/bin/bash
+
+touch /var/lock/subsys/local
+
+# Waiting for cloud-init to generate $NFVBENCH_CONF, retry 60 seconds
+NFVBENCH_CONF=/etc/nfvbenchvm.conf
+retry=30
+until [ $retry -eq 0 ]; do
+ if [ -f $NFVBENCH_CONF ]; then break; fi
+ retry=$[$retry-1]
+ sleep 2
+done
+if [ ! -f $NFVBENCH_CONF ]; then
+ exit 0
+fi
+
+# Parse and obtain all configurations
+echo "Generating configurations for NFVbench and TRex..."
+eval $(cat $NFVBENCH_CONF)
+touch /nfvbench_configured.flag
+
+# Add DNS entry
+if [ $DNS_SERVERS ]; then
+ IFS="," read -a dns <<< $DNS_SERVERS
+ for d in "${dns[@]}"; do
+ echo "nameserver $d" >> /etc/resolv.conf
+ done
+fi
+
+# CPU isolation optimizations
+echo 1 > /sys/bus/workqueue/devices/writeback/cpumask
+echo 1 > /sys/devices/virtual/workqueue/cpumask
+echo 1 > /proc/irq/default_smp_affinity
+for irq in `ls /proc/irq/`; do
+ if [ -f /proc/irq/$irq/smp_affinity ]; then
+ echo 1 > /proc/irq/$irq/smp_affinity
+ fi
+done
+
+NET_PATH=/sys/class/net
+
+get_eth_port() {
+ # device mapping for CentOS Linux 7:
+ # lspci:
+ # 00.03.0 Ethernet controller: Red Hat, Inc. Virtio network device
+ # 00.04.0 Ethernet controller: Red Hat, Inc. Virtio network device
+ # /sys/class/net:
+ # /sys/class/net/eth0 -> ../../devices/pci0000:00/0000:00:03.0/virtio0/net/eth0
+ # /sys/class/net/eth1 -> ../../devices/pci0000:00/0000:00:04.0/virtio1/net/eth1
+
+ mac=$1
+ for f in $(ls $NET_PATH/); do
+ if grep -q "$mac" $NET_PATH/$f/address; then
+ eth_port=$(readlink $NET_PATH/$f | cut -d "/" -f8)
+ # some virtual interfaces match on MAC and do not have a PCI address
+ if [ "$eth_port" -a "$eth_port" != "N/A" ]; then
+ # Found matching interface
+ logger "NFVBENCHVM: found interface $f ($eth_port) matching $mac"
+ break
+ else
+ eth_port=""
+ fi
+ fi;
+ done
+ if [ -z "$eth_port" ]; then
+ echo "ERROR: Cannot find eth port for MAC $mac" >&2
+ logger "NFVBENCHVM ERROR: Cannot find eth port for MAC $mac"
+ return 1
+ fi
+ echo $eth_port
+ return 0
+}
+
+# Set VM MANAGEMENT port up and running
+if [ $INTF_MGMT_CIDR ] && [ $INTF_MGMT_IP_GW ]; then
+ if [ $INTF_MAC_MGMT ]; then
+ ETH_PORT=$(get_eth_port $INTF_MAC_MGMT)
+ elif [ "$CLOUD_DETAIL" ] && [ "$PORT_MGMT_NAME" ]; then
+ $INTF_MAC_MGMT=$(openstack --os-cloud $CLOUD_DETAIL port list | grep $PORT_MGMT_NAME | grep -o -Ei '([a-fA-F0-9:]{17}|[a-fA-F0-9]{12}$)' | head -1)
+ ETH_PORT=$(get_eth_port $INTF_MAC_MGMT)
+ else
+ ETH_PORT=""
+ fi
+ if [ -z "$ETH_PORT" ]; then
+ echo "ERROR: Cannot find eth port for management port" >&2
+ logger "NFVBENCHVM ERROR: Cannot find eth port for management port"
+ return 1
+ fi
+
+ # By default, configure the MTU of the management interface to the
+ # conservative value of 1500: this will reduce the risk to get an
+ # unmanageable VM in some setups.
+ #
+ # To set the MTU to a different value, configure the INTF_MGMT_MTU variable
+ # in /etc/nfvbenchvm.conf. If INTF_MGMT_MTU is set to the special value
+ # "auto", the MTU will not be configured and it will keep the value set by
+ # the hypervisor ("legacy" nfvbenchvm behavior). If INTF_MGMT_MTU is unset,
+ # the MTU will be set to 1500. In other cases, the MTU will be set to the
+ # value of INTF_MGMT_MTU.
+ #
+ if [[ -z "$INTF_MGMT_MTU" ]]; then
+ ip link set $ETH_PORT mtu 1500
+ elif [[ "$INTF_MGMT_MTU" != "auto" ]]; then
+ ip link set $ETH_PORT mtu $INTF_MGMT_MTU
+ fi
+
+ ip addr add $INTF_MGMT_CIDR dev $ETH_PORT
+ ip link set $ETH_PORT up
+ ip route add default via $INTF_MGMT_IP_GW dev $ETH_PORT
+else
+ echo "INFO: VM management IP Addresses missing in $NFVBENCH_CONF"
+fi
+
+/nfvbench/configure-nfvbench.sh
+
+if [ $ACTION ]; then
+ /nfvbench/start-nfvbench.sh $ACTION
+else
+ /nfvbench/start-nfvbench.sh
+fi
+
+exit 0
diff --git a/nfvbenchvm/dib/elements/nfvbenchvm/static/etc/rc.d/rc.local b/nfvbenchvm/dib/elements/nfvbenchvm/static/etc/rc.d/rc.local.loopvm
index 59cb4a1..181ff2a 100644
--- a/nfvbenchvm/dib/elements/nfvbenchvm/static/etc/rc.d/rc.local
+++ b/nfvbenchvm/dib/elements/nfvbenchvm/static/etc/rc.d/rc.local.loopvm
@@ -2,7 +2,7 @@
touch /var/lock/subsys/local
-# Waiting for cloud-init to generate $TESTPMD_CONF, retry 60 seconds
+# Waiting for cloud-init to generate $NFVBENCH_CONF, retry 60 seconds
NFVBENCH_CONF=/etc/nfvbenchvm.conf
retry=30
until [ $retry -eq 0 ]; do
@@ -98,6 +98,78 @@ get_pci_address() {
return 0
}
+get_eth_port() {
+ # device mapping for CentOS Linux 7:
+ # lspci:
+ # 00.03.0 Ethernet controller: Red Hat, Inc. Virtio network device
+ # 00.04.0 Ethernet controller: Red Hat, Inc. Virtio network device
+ # /sys/class/net:
+ # /sys/class/net/eth0 -> ../../devices/pci0000:00/0000:00:03.0/virtio0/net/eth0
+ # /sys/class/net/eth1 -> ../../devices/pci0000:00/0000:00:04.0/virtio1/net/eth1
+
+ mac=$1
+ for f in $(ls $NET_PATH/); do
+ if grep -q "$mac" $NET_PATH/$f/address; then
+ eth_port=$(readlink $NET_PATH/$f | cut -d "/" -f8)
+ # some virtual interfaces match on MAC and do not have a PCI address
+ if [ "$eth_port" -a "$eth_port" != "N/A" ]; then
+ # Found matching interface
+ logger "NFVBENCHVM: found interface $f ($eth_port) matching $mac"
+ break
+ else
+ eth_port=""
+ fi
+ fi;
+ done
+ if [ -z "$eth_port" ]; then
+ echo "ERROR: Cannot find eth port for MAC $mac" >&2
+ logger "NFVBENCHVM ERROR: Cannot find eth port for MAC $mac"
+ return 1
+ fi
+ echo $eth_port
+ return 0
+}
+
+# Set VM MANAGEMENT port up and running
+if [ $INTF_MGMT_CIDR ] && [ $INTF_MGMT_IP_GW ]; then
+ if [ $INTF_MAC_MGMT ]; then
+ ETH_PORT=$(get_eth_port $INTF_MAC_MGMT)
+ else
+ ETH_PORT="eth0"
+ fi
+
+ # By default, configure the MTU of the management interface to the
+ # conservative value of 1500: this will reduce the risk to get an
+ # unmanageable VM in some setups.
+ #
+ # To set the MTU to a different value, configure the INTF_MGMT_MTU variable
+ # in /etc/nfvbenchvm.conf. If INTF_MGMT_MTU is set to the special value
+ # "auto", the MTU will not be configured and it will keep the value set by
+ # the hypervisor ("legacy" nfvbenchvm behavior). If INTF_MGMT_MTU is unset,
+ # the MTU will be set to 1500. In other cases, the MTU will be set to the
+ # value of INTF_MGMT_MTU.
+ #
+ if [[ -z "$INTF_MGMT_MTU" ]]; then
+ ip link set $ETH_PORT mtu 1500
+ elif [[ "$INTF_MGMT_MTU" != "auto" ]]; then
+ ip link set $ETH_PORT mtu $INTF_MGMT_MTU
+ fi
+
+ ip addr add $INTF_MGMT_CIDR dev $ETH_PORT
+ ip link set $ETH_PORT up
+ ip route add default via $INTF_MGMT_IP_GW dev $ETH_PORT
+else
+ echo "INFO: VM management IP Addresses missing in $NFVBENCH_CONF"
+fi
+
+# Set dynamically interfaces mac values, if VM is spawn without using NFVBench
+# and management interface is used on eth0
+if [ -z "$INTF_MAC1" ] && [ -z "$INTF_MAC2" ]; then
+ INTF_MAC1=$(ip l show eth1 | grep -o -Ei '([a-fA-F0-9:]{17}|[a-fA-F0-9]{12}$)' | head -1)
+ INTF_MAC2=$(ip l show eth2 | grep -o -Ei '([a-fA-F0-9:]{17}|[a-fA-F0-9]{12}$)' | head -1)
+fi
+
+
# Sometimes the interfaces on the loopback VM will use different drivers, e.g.
# one from vswitch which is virtio based, one is from SRIOV VF. In this case,
# we have to make sure the forwarder uses them in the right order, which is
@@ -110,20 +182,43 @@ else
logger "NFVBENCHVM ERROR: VM MAC Addresses missing in $NFVBENCH_CONF"
fi
+wait_vpp_service() {
+ # Wait for at most wait_max=$1 seconds until VPP service is ready. Exit
+ # with code 1 if timeout is reached.
+ #
+ # Because VPP systemd unit has Type=simple, systemctl will report the
+ # service to be active has soon as it is forked. This does not mean that
+ # the service is ready, and actually it takes some times before vppctl can
+ # succesfully connect to VPP client socket /run/vpp/cli.sock.
+ local wait_max=$1
+
+ local wait_time=0
+ while ! vppctl show int; do
+ if [[ $wait_time -ge $wait_max ]]; then
+ # Log error to both system log and standard error output
+ logger -s "NFVBENCHVM ERROR: VPP service still not ready after $wait_max seconds." \
+ "Exiting $(basename $0)."
+ exit 1
+ fi
+ sleep 1
+ wait_time=$(( wait_time + 1 ))
+ done
+}
+
if [ $PCI_ADDRESS_1 ] && [ $PCI_ADDRESS_2 ]; then
logger "NFVBENCHVM: Using pci $PCI_ADDRESS_1 ($INTF_MAC1)"
logger "NFVBENCHVM: Using pci $PCI_ADDRESS_2 ($INTF_MAC2)"
+ # active uio_pci_generic driver
+ modprobe uio_pci_generic
# Configure the forwarder
- if [ -z "`lsmod | grep igb_uio`" ]; then
- modprobe uio
- insmod /dpdk/igb_uio.ko
- fi
if [ "$FORWARDER" == "testpmd" ]; then
echo "Configuring testpmd..."
- # Binding ports to DPDK
- /dpdk/dpdk-devbind.py -b igb_uio $PCI_ADDRESS_1
- /dpdk/dpdk-devbind.py -b igb_uio $PCI_ADDRESS_2
- screen -dmSL testpmd /dpdk/testpmd \
+ mkdir /dpdk
+ echo "set promisc all off" > /dpdk/testpmd_cmd.txt
+ # Binding ports to DPDK VFIO or UIO
+ dpdk-devbind -b vfio-pci $PCI_ADDRESS_1 || dpdk-devbind -b uio_pci_generic $PCI_ADDRESS_1
+ dpdk-devbind -b vfio-pci $PCI_ADDRESS_2 || dpdk-devbind -b uio_pci_generic $PCI_ADDRESS_2
+ screen -dmSL testpmd testpmd \
-c $CORE_MASK \
-n 4 \
-- \
@@ -141,7 +236,7 @@ if [ $PCI_ADDRESS_1 ] && [ $PCI_ADDRESS_2 ]; then
--cmdline-file=/dpdk/testpmd_cmd.txt
echo "testpmd running in screen 'testpmd'"
logger "NFVBENCHVM: testpmd running in screen 'testpmd'"
- else
+ elif [ "$FORWARDER" == "vpp" ]; then
echo "Configuring vpp..."
cp /vpp/startup.conf /etc/vpp/startup.conf
cp /vpp/vm.conf /etc/vpp/vm.conf
@@ -150,24 +245,48 @@ if [ $PCI_ADDRESS_1 ] && [ $PCI_ADDRESS_2 ]; then
sed -i "s/{{PCI_ADDRESS_2}}/$PCI_ADDRESS_2/g" /etc/vpp/startup.conf
sed -i "s/{{WORKER_CORES}}/$WORKER_CORES/g" /etc/vpp/startup.conf
sed -i "s/{{VIF_MQ_SIZE}}/${VIF_MQ_SIZE}/g" /etc/vpp/startup.conf
- service vpp start
- sleep 10
+ sed -i "s/{{NUM_MBUFS}}/${NUM_MBUFS}/g" /etc/vpp/startup.conf
+ systemctl start vpp
+ # Wait until VPP service is ready for at most 30 seconds
+ wait_vpp_service 30
- INTFS=`vppctl show int | grep Ethernet | xargs`
- INTF_1=`echo $INTFS | awk '{ print $1 }'`
- INTF_2=`echo $INTFS | awk '{ print $4 }'`
+ VPPCTL_OUTPUT=$(vppctl show int)
+ INTFS=$(echo "$VPPCTL_OUTPUT" | grep Ethernet | xargs)
+ INTF_1=$(echo $INTFS | awk '{ print $1 }')
+ INTF_2=$(echo $INTFS | awk '{ print $4 }')
+ if [[ -z "$INTF_1" ]] || [[ -z "$INTF_2" ]]; then
+ # Log error to both system log and standard error output
+ logger -s "NFVBENCHVM DEBUG: \"vppctl show int\" output:"
+ logger -s "NFVBENCHVM DEBUG: $VPPCTL_OUTPUT"
+ logger -s "NFVBENCHVM ERROR: vppctl does not show the two Ethernet interfaces we expect." \
+ "Exiting $(basename $0)."
+ exit 1
+ fi
+ if [ -z "${TG_MAC1}" ]; then
+ # vm.conf does not support lines commented with #, so
+ # we need to remove the line to set the static ARP entry.
+ sed -i "/{{TG_MAC1}}/d" /etc/vpp/vm.conf
+ else
+ sed -i "s/{{TG_MAC1}}/${TG_MAC1}/g" /etc/vpp/vm.conf
+ fi
+ if [ -z "${TG_MAC2}" ]; then
+ sed -i "/{{TG_MAC2}}/d" /etc/vpp/vm.conf
+ else
+ sed -i "s/{{TG_MAC2}}/${TG_MAC2}/g" /etc/vpp/vm.conf
+ fi
sed -i "s/{{INTF_1}}/${INTF_1//\//\/}/g" /etc/vpp/vm.conf
sed -i "s/{{INTF_2}}/${INTF_2//\//\/}/g" /etc/vpp/vm.conf
sed -i "s/{{VNF_GATEWAY1_CIDR}}/${VNF_GATEWAY1_CIDR//\//\/}/g" /etc/vpp/vm.conf
sed -i "s/{{VNF_GATEWAY2_CIDR}}/${VNF_GATEWAY2_CIDR//\//\/}/g" /etc/vpp/vm.conf
- sed -i "s/{{TG_MAC1}}/${TG_MAC1}/g" /etc/vpp/vm.conf
- sed -i "s/{{TG_MAC2}}/${TG_MAC2}/g" /etc/vpp/vm.conf
sed -i "s/{{TG_NET1}}/${TG_NET1//\//\/}/g" /etc/vpp/vm.conf
sed -i "s/{{TG_NET2}}/${TG_NET2//\//\/}/g" /etc/vpp/vm.conf
sed -i "s/{{TG_GATEWAY1_IP}}/${TG_GATEWAY1_IP}/g" /etc/vpp/vm.conf
sed -i "s/{{TG_GATEWAY2_IP}}/${TG_GATEWAY2_IP}/g" /etc/vpp/vm.conf
- service vpp restart
+ systemctl restart vpp
logger "NFVBENCHVM: vpp service restarted"
+ else
+ echo "ERROR: Unknown forwarder value. Accepted values: testpmd or vpp"
+ exit 1
fi
else
echo "ERROR: Cannot find PCI Address from MAC"
@@ -175,3 +294,5 @@ else
echo "$INTF_MAC2: $PCI_ADDRESS_2"
logger "NFVBENCHVM ERROR: Cannot find PCI Address from MAC"
fi
+
+exit 0
diff --git a/nfvbenchvm/dib/elements/nfvbenchvm/static/etc/systemd/system/nfvbench.service b/nfvbenchvm/dib/elements/nfvbenchvm/static/etc/systemd/system/nfvbench.service
new file mode 100644
index 0000000..e952070
--- /dev/null
+++ b/nfvbenchvm/dib/elements/nfvbenchvm/static/etc/systemd/system/nfvbench.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=nfvbench service
+After=network.target
+
+[Service]
+Type=forking
+User=root
+RemainAfterExit=yes
+ExecStart=/bin/bash -a -c "source /etc/profile.d/nfvbench.sh && /usr/bin/screen -dmSL nfvbench /usr/local/bin/nfvbench -c /etc/nfvbench/nfvbench.conf --server"
+
+[Install]
+WantedBy=multi-user.target
diff --git a/nfvbenchvm/dib/elements/nfvbenchvm/static/nfvbench/configure-nfvbench.sh b/nfvbenchvm/dib/elements/nfvbenchvm/static/nfvbench/configure-nfvbench.sh
new file mode 100644
index 0000000..3bf1d8d
--- /dev/null
+++ b/nfvbenchvm/dib/elements/nfvbenchvm/static/nfvbench/configure-nfvbench.sh
@@ -0,0 +1,258 @@
+#!/bin/bash
+
+set -e
+
+NFVBENCH_CONF=/etc/nfvbenchvm.conf
+E2E_CFG=/etc/nfvbench/e2e.cfg
+LOOPBACK_CFG=/etc/nfvbench/loopback.cfg
+NFVBENCH_CFG=/etc/nfvbench/nfvbench.cfg
+
+# Parse and obtain all configurations
+eval $(cat $NFVBENCH_CONF)
+
+# WE assume there are at least 2 cores available for the VM
+CPU_CORES=$(grep -c ^processor /proc/cpuinfo)
+
+# We need at least 2 admin cores (one master and another latency).
+if [ $CPU_CORES -le 3 ]; then
+ ADMIN_CORES=2
+else
+ # If the number of cores is even we
+ # reserve 3 cores for admin (third being idle) so the number of
+ # workers is either 1 (if CPU_CORES is 4) or always even
+ if (( $CPU_CORES % 2 )); then
+ ADMIN_CORES=2
+ else
+ ADMIN_CORES=3
+ fi
+fi
+# 2 vcpus: AW (core 0: Admin, core 1: Worker)
+# 3 vcpus: AWW (core 0: Admin, core 1,2: Worker)
+# 4 vcpus: AWWU (core 0: Admin, core 1,2: Worker, core 3: Unused)
+# 5 vcpus: AWWWW
+# 6 vcpus: AWWWWU
+WORKER_CORES=$(expr $CPU_CORES - $ADMIN_CORES)
+# worker cores are all cores except the admin core (core 0) and the eventual unused core
+# AW -> 1
+# AWW -> 1,2
+# AWWU -> 1,2
+WORKER_CORE_LIST=$(seq -s, $ADMIN_CORES $WORKER_CORES)
+# always use all cores
+CORE_MASK=0x$(echo "obase=16; 2 ^ $CPU_CORES - 1" | bc)
+
+logger "NFVBENCHVM: CPU_CORES=$CPU_CORES, ADMIN_CORES=$ADMIN_CORES, WORKER_CORES=$WORKER_CORES ($WORKER_CORE_LIST)"
+
+# Isolate all cores that are reserved for workers
+tuna -c $WORKER_CORE_LIST --isolate
+
+NET_PATH=/sys/class/net
+
+get_pci_address() {
+ # device mapping for CentOS Linux 7:
+ # lspci:
+ # 00.03.0 Ethernet controller: Red Hat, Inc. Virtio network device
+ # 00.04.0 Ethernet controller: Red Hat, Inc. Virtio network device
+ # /sys/class/net:
+ # /sys/class/net/eth0 -> ../../devices/pci0000:00/0000:00:03.0/virtio0/net/eth0
+ # /sys/class/net/eth1 -> ../../devices/pci0000:00/0000:00:04.0/virtio1/net/eth1
+
+ mac=$1
+ for f in $(ls $NET_PATH/); do
+ if grep -q "$mac" $NET_PATH/$f/address; then
+ pci_addr=$(readlink $NET_PATH/$f | cut -d "/" -f5)
+ # some virtual interfaces match on MAC and do not have a PCI address
+ if [ "$pci_addr" -a "$pci_addr" != "N/A" ]; then
+ # Found matching interface
+ logger "NFVBENCHVM: found interface $f ($pci_addr) matching $mac"
+ break
+ else
+ pci_addr=""
+ fi
+ fi;
+ done
+ if [ -z "$pci_addr" ]; then
+ echo "ERROR: Cannot find pci address for MAC $mac" >&2
+ logger "NFVBENCHVM ERROR: Cannot find pci address for MAC $mac"
+ return 1
+ fi
+ echo $pci_addr
+ return 0
+}
+
+get_interfaces_mac_values(){
+ # Set dynamically interfaces mac values, if VM is spawn with SRIOV PF ports
+ # and openstack API are accessible
+ if [ -z "$LOOPBACK_INTF_MAC1" ] && [ -z "$LOOPBACK_INTF_MAC2" ]; then
+ if [ "$CLOUD_DETAIL" ] && [ "$LOOPBACK_PORT_NAME1" ] && [ "$LOOPBACK_PORT_NAME2" ]; then
+ LOOPBACK_INTF_MAC1=$(openstack --os-cloud $CLOUD_DETAIL port list | grep $LOOPBACK_PORT_NAME1 | grep -o -Ei '([a-fA-F0-9:]{17}|[a-fA-F0-9]{12}$)' | head -1)
+ LOOPBACK_INTF_MAC2=$(openstack --os-cloud $CLOUD_DETAIL port list | grep $LOOPBACK_PORT_NAME2 | grep -o -Ei '([a-fA-F0-9:]{17}|[a-fA-F0-9]{12}$)' | head -1)
+ fi
+ fi
+ if [ -z "$E2E_INTF_MAC1" ] && [ -z "$E2E_INTF_MAC2" ]; then
+ if [ "$CLOUD_DETAIL" ] && [ "$E2E_PORT_NAME1" ] && [ "$E2E_PORT_NAME2" ]; then
+ E2E_INTF_MAC1=$(openstack --os-cloud $CLOUD_DETAIL port list | grep $E2E_PORT_NAME1 | grep -o -Ei '([a-fA-F0-9:]{17}|[a-fA-F0-9]{12}$)' | head -1)
+ E2E_INTF_MAC2=$(openstack --os-cloud $CLOUD_DETAIL port list | grep $E2E_PORT_NAME2 | grep -o -Ei '([a-fA-F0-9:]{17}|[a-fA-F0-9]{12}$)' | head -1)
+ fi
+ fi
+ if [ -z "$INTF_MAC1" ] && [ -z "$INTF_MAC2" ]; then
+ if [ "$CLOUD_DETAIL" ] && [ "$PORT_NAME1" ] && [ "$PORT_NAME2" ]; then
+ INTF_MAC1=$(openstack --os-cloud $CLOUD_DETAIL port list | grep $PORT_NAME1 | grep -o -Ei '([a-fA-F0-9:]{17}|[a-fA-F0-9]{12}$)' | head -1)
+ INTF_MAC2=$(openstack --os-cloud $CLOUD_DETAIL port list | grep $PORT_NAME2 | grep -o -Ei '([a-fA-F0-9:]{17}|[a-fA-F0-9]{12}$)' | head -1)
+ fi
+ fi
+}
+
+get_interfaces_pci_address(){
+ # Sometimes the interfaces on the generator VM will use different physical networks. In this case,
+ # we have to make sure the generator uses them in the right order.
+ if [ $LOOPBACK_INTF_MAC1 ] && [ $LOOPBACK_INTF_MAC2 ]; then
+ LOOPBACK_PCI_ADDRESS_1=$(get_pci_address $LOOPBACK_INTF_MAC1)
+ LOOPBACK_PCI_ADDRESS_2=$(get_pci_address $LOOPBACK_INTF_MAC2)
+
+ echo LOOPBACK_PCI_ADDRESS_1=$LOOPBACK_PCI_ADDRESS_1 >> $NFVBENCH_CONF
+ echo LOOPBACK_PCI_ADDRESS_2=$LOOPBACK_PCI_ADDRESS_2 >> $NFVBENCH_CONF
+ fi
+ if [ $E2E_INTF_MAC1 ] && [ $E2E_INTF_MAC2 ]; then
+ E2E_PCI_ADDRESS_1=$(get_pci_address $E2E_INTF_MAC1)
+ E2E_PCI_ADDRESS_2=$(get_pci_address $E2E_INTF_MAC2)
+
+ echo E2E_PCI_ADDRESS_1=$E2E_PCI_ADDRESS_1 >> $NFVBENCH_CONF
+ echo E2E_PCI_ADDRESS_2=$E2E_PCI_ADDRESS_2 >> $NFVBENCH_CONF
+ fi
+ if [ $INTF_MAC1 ] && [ $INTF_MAC2 ]; then
+ PCI_ADDRESS_1=$(get_pci_address $INTF_MAC1)
+ PCI_ADDRESS_2=$(get_pci_address $INTF_MAC2)
+
+ echo PCI_ADDRESS_1=$PCI_ADDRESS_1 >> $NFVBENCH_CONF
+ echo PCI_ADDRESS_2=$PCI_ADDRESS_2 >> $NFVBENCH_CONF
+ fi
+}
+
+bind_interfaces(){
+ if [ $LOOPBACK_PCI_ADDRESS_1 ]; then
+ dpdk-devbind -b vfio-pci $LOOPBACK_PCI_ADDRESS_1
+ fi
+ if [ $LOOPBACK_PCI_ADDRESS_2 ]; then
+ dpdk-devbind -b vfio-pci $LOOPBACK_PCI_ADDRESS_2
+ fi
+ if [ $E2E_PCI_ADDRESS_1 ]; then
+ dpdk-devbind -b vfio-pci $E2E_PCI_ADDRESS_1
+ fi
+ if [ $E2E_PCI_ADDRESS_2 ]; then
+ dpdk-devbind -b vfio-pci $E2E_PCI_ADDRESS_2
+ fi
+ if [ $PCI_ADDRESS_1 ]; then
+ dpdk-devbind -b vfio-pci $PCI_ADDRESS_1
+ fi
+ if [ $PCI_ADDRESS_2 ]; then
+ dpdk-devbind -b vfio-pci $PCI_ADDRESS_2
+ fi
+}
+
+configure_loopback_mode(){
+ if [ $LOOPBACK_PCI_ADDRESS_1 ] && [ $LOOPBACK_PCI_ADDRESS_2 ]; then
+ logger "NFVBENCHVM: loopback - Using pci $LOOPBACK_PCI_ADDRESS_1 ($LOOPBACK_INTF_MAC1)"
+ logger "NFVBENCHVM: loopback - Using pci $LOOPBACK_PCI_ADDRESS_2 ($LOOPBACK_INTF_MAC2)"
+
+ echo "Configuring nfvbench and TRex for loopback mode..."
+ # execute env script to avoid no ENV in screen and a nfvbench error
+ source /etc/profile.d/nfvbench.sh
+ sed -i "s/{{PCI_ADDRESS_1}}/$LOOPBACK_PCI_ADDRESS_1/g" /etc/nfvbench/loopback.cfg
+ sed -i "s/{{PCI_ADDRESS_2}}/$LOOPBACK_PCI_ADDRESS_2/g" /etc/nfvbench/loopback.cfg
+ sed -i "s/{{CORES}}/$WORKER_CORES/g" /etc/nfvbench/loopback.cfg
+ CORE_THREADS=$(seq -s, 2 $((2+$WORKER_CORES)))
+ sed -i "s/{{CORE_THREADS}}/$CORE_THREADS/g" /etc/nfvbench/loopback.cfg
+ else
+ echo "ERROR: Cannot find PCI Address from MAC"
+ echo "$LOOPBACK_INTF_MAC1: $LOOPBACK_PCI_ADDRESS_1"
+ echo "$LOOPBACK_INTF_MAC2: $LOOPBACK_PCI_ADDRESS_2"
+ logger "NFVBENCHVM ERROR: Cannot find PCI Address from MAC (loopback mode)"
+ fi
+
+}
+
+configure_e2e_mode(){
+ if [ $E2E_PCI_ADDRESS_1 ] && [ $E2E_PCI_ADDRESS_2 ]; then
+ logger "NFVBENCHVM: e2e - Using pci $E2E_PCI_ADDRESS_1 ($E2E_INTF_MAC1)"
+ logger "NFVBENCHVM: e2e - Using pci $E2E_PCI_ADDRESS_2 ($E2E_INTF_MAC2)"
+
+ echo "Configuring nfvbench and TRex for e2e mode..."
+ # execute env script to avoid no ENV in screen and a nfvbench error
+ source /etc/profile.d/nfvbench.sh
+ sed -i "s/{{PCI_ADDRESS_1}}/$E2E_PCI_ADDRESS_1/g" /etc/nfvbench/e2e.cfg
+ sed -i "s/{{PCI_ADDRESS_2}}/$E2E_PCI_ADDRESS_2/g" /etc/nfvbench/e2e.cfg
+ sed -i "s/{{CORES}}/$WORKER_CORES/g" /etc/nfvbench/e2e.cfg
+ CORE_THREADS=$(seq -s, 2 $((2+$WORKER_CORES)))
+ sed -i "s/{{CORE_THREADS}}/$CORE_THREADS/g" /etc/nfvbench/e2e.cfg
+ else
+ echo "ERROR: Cannot find PCI Address from MAC"
+ echo "$E2E_INTF_MAC1: $E2E_PCI_ADDRESS_1"
+ echo "$E2E_INTF_MAC2: $E2E_PCI_ADDRESS_2"
+ logger "NFVBENCHVM ERROR: Cannot find PCI Address from MAC (e2e mode)"
+ fi
+}
+
+configure_nfvbench(){
+ if [ $PCI_ADDRESS_1 ] && [ $PCI_ADDRESS_2 ]; then
+ logger "NFVBENCHVM: Using pci $PCI_ADDRESS_1 ($INTF_MAC1)"
+ logger "NFVBENCHVM: Using pci $PCI_ADDRESS_2 ($INTF_MAC2)"
+
+ echo "Configuring nfvbench and TRex..."
+ # execute env script to avoid no ENV in screen and a nfvbench error
+ source /etc/profile.d/nfvbench.sh
+
+ if [ $DEFAULT ]; then
+ cp /nfvbench/nfvbench.conf /etc/nfvbench/nfvbench.cfg
+ fi
+ sed -i "s/{{PCI_ADDRESS_1}}/$PCI_ADDRESS_1/g" /etc/nfvbench/nfvbench.cfg
+ sed -i "s/{{PCI_ADDRESS_2}}/$PCI_ADDRESS_2/g" /etc/nfvbench/nfvbench.cfg
+ sed -i "s/{{CORES}}/$WORKER_CORES/g" /etc/nfvbench/nfvbench.cfg
+ CORE_THREADS=$(seq -s, 2 $((2+$WORKER_CORES)))
+ sed -i "s/{{CORE_THREADS}}/$CORE_THREADS/g" /etc/nfvbench/nfvbench.cfg
+
+ else
+ echo "ERROR: Cannot find PCI Address from MAC"
+ echo "$INTF_MAC1: $PCI_ADDRESS_1"
+ echo "$INTF_MAC2: $PCI_ADDRESS_2"
+ logger "NFVBENCHVM ERROR: Cannot find PCI Address from MAC"
+ fi
+}
+
+# Check if config files are provided by config drive (CLI command) or Ansible script
+# and configure NFVbench accordingly to these files
+if [ -f $E2E_CFG ]; then
+ if [ -z $E2E_PCI_ADDRESS_1 ] && [ -z $E2E_PCI_ADDRESS_2 ]; then
+ get_interfaces_mac_values
+ get_interfaces_pci_address
+ bind_interfaces
+ fi
+ configure_e2e_mode
+fi
+if [ -f $LOOPBACK_CFG ]; then
+ if [ -z $LOOPBACK_PCI_ADDRESS_1 ] && [ -z $LOOPBACK_PCI_ADDRESS_2 ]; then
+ get_interfaces_mac_values
+ get_interfaces_pci_address
+ bind_interfaces
+ fi
+ configure_loopback_mode
+fi
+# if nfvbench.cfg is provided by config drive (CLI command) or Ansible script
+# configure nfvbench using this file otherwise untemplate default config if no file exists
+if [ -f $NFVBENCH_CFG ]; then
+ if [ -z $PCI_ADDRESS_1 ] && [ -z $PCI_ADDRESS_2 ]; then
+ get_interfaces_mac_values
+ get_interfaces_pci_address
+ bind_interfaces
+ fi
+ configure_nfvbench
+elif [ ! -f $E2E_CFG ] && [ ! -f $LOOPBACK_CFG ]; then
+ if [ -z $PCI_ADDRESS_1 ] && [ -z $PCI_ADDRESS_2 ]; then
+ get_interfaces_mac_values
+ get_interfaces_pci_address
+ bind_interfaces
+ fi
+ DEFAULT=true
+ configure_nfvbench
+fi
+
+exit 0 \ No newline at end of file
diff --git a/nfvbenchvm/dib/elements/nfvbenchvm/static/nfvbench/nfvbench.conf b/nfvbenchvm/dib/elements/nfvbenchvm/static/nfvbench/nfvbench.conf
new file mode 100644
index 0000000..c1ca23e
--- /dev/null
+++ b/nfvbenchvm/dib/elements/nfvbenchvm/static/nfvbench/nfvbench.conf
@@ -0,0 +1,25 @@
+traffic_generator:
+ generator_profile:
+ - name: trex-local
+ tool: TRex
+ ip: 127.0.0.1
+ zmq_pub_port: 4500
+ zmq_rpc_port: 4501
+ software_mode: false
+
+ cores: {{CORES}}
+ platform:
+ master_thread_id: '0'
+ latency_thread_id: '1'
+ dual_if:
+ - socket: 0
+ threads: [{{CORE_THREADS}}]
+
+ interfaces:
+ - port: 0
+ pci: "{{PCI_ADDRESS_1}}"
+ switch:
+ - port: 1
+ pci: "{{PCI_ADDRESS_2}}"
+ switch:
+ intf_speed: \ No newline at end of file
diff --git a/nfvbenchvm/dib/elements/nfvbenchvm/static/nfvbench/start-nfvbench.sh b/nfvbenchvm/dib/elements/nfvbenchvm/static/nfvbench/start-nfvbench.sh
new file mode 100644
index 0000000..1f6fa28
--- /dev/null
+++ b/nfvbenchvm/dib/elements/nfvbenchvm/static/nfvbench/start-nfvbench.sh
@@ -0,0 +1,51 @@
+#!/bin/bash
+
+
+restart_nfvbench_service(){
+ service nfvbench restart
+ echo "NFVbench running in screen 'nfvbench'"
+ logger "NFVBENCHVM: NFVbench running in screen 'nfvbench'"
+}
+
+start_nfvbench(){
+ ln -sfn /etc/nfvbench/nfvbench.cfg /etc/nfvbench/nfvbench.conf
+ restart_nfvbench_service
+}
+
+start_nfvbench_e2e_mode(){
+ ln -sfn /etc/nfvbench/e2e.cfg /etc/nfvbench/nfvbench.conf
+ restart_nfvbench_service
+}
+
+start_nfvbench_loopback_mode(){
+ ln -sfn /etc/nfvbench/loopback.cfg /etc/nfvbench/nfvbench.conf
+ restart_nfvbench_service
+}
+
+usage() {
+ echo "Usage: $0 action"
+ echo "action (optional):"
+ echo "e2e start NFVbench with E2E config file"
+ echo "loopback start NFVbench with loopback config file"
+ echo ""
+ echo "If no action is given NFVbench will start with default config file"
+ exit 1
+}
+
+# ----------------------------------------------------------------------------
+# Parse command line options and configure the script
+# ----------------------------------------------------------------------------
+if [ "$#" -lt 1 ]; then
+ start_nfvbench
+ exit 0
+else
+ if [ $1 = "e2e" ]; then
+ start_nfvbench_e2e_mode
+ exit 0
+ elif [ $1 = "loopback" ]; then
+ start_nfvbench_loopback_mode
+ exit 0
+ else
+ usage
+ fi
+fi
diff --git a/nfvbenchvm/dib/elements/nfvbenchvm/static/vpp/startup.conf b/nfvbenchvm/dib/elements/nfvbenchvm/static/vpp/startup.conf
index ce5ab45..874f6cb 100644
--- a/nfvbenchvm/dib/elements/nfvbenchvm/static/vpp/startup.conf
+++ b/nfvbenchvm/dib/elements/nfvbenchvm/static/vpp/startup.conf
@@ -19,7 +19,8 @@ dpdk {
socket-mem 1024
dev {{PCI_ADDRESS_1}}
dev {{PCI_ADDRESS_2}}
- uio-driver igb_uio
+ uio-driver uio_pci_generic
+ num-mbufs {{NUM_MBUFS}}
}
api-segment {
diff --git a/pylint.rc b/pylint.rc
index 8671cef..f31b894 100644
--- a/pylint.rc
+++ b/pylint.rc
@@ -50,7 +50,7 @@ confidence=
# --enable=similarities". If you want to run only the classes checker, but have
# no Warning level messages displayed, use"--disable=all --enable=classes
# --disable=W"
-disable=unused-argument,global-statement,too-many-statements,too-many-arguments,too-many-branches,catching-non-exception,relative-import,too-many-locals,invalid-name,broad-except,print-statement,parameter-unpacking,unpacking-in-except,old-raise-syntax,backtick,long-suffix,old-ne-operator,import-star-module-level,raw-checker-failed,locally-disabled,locally-enabled,file-ignored,suppressed-message,useless-suppression,deprecated-pragma,apply-builtin,basestring-builtin,buffer-builtin,cmp-builtin,coerce-builtin,execfile-builtin,file-builtin,long-builtin,raw_input-builtin,reduce-builtin,standarderror-builtin,unicode-builtin,xrange-builtin,coerce-method,delslice-method,getslice-method,setslice-method,no-absolute-import,old-division,dict-iter-method,dict-view-method,next-method-called,metaclass-assignment,indexing-exception,raising-string,reload-builtin,oct-method,hex-method,nonzero-method,cmp-method,input-builtin,round-builtin,intern-builtin,unichr-builtin,map-builtin-not-iterating,zip-builtin-not-iterating,range-builtin-not-iterating,filter-builtin-not-iterating,using-cmp-argument,eq-without-hash,div-method,idiv-method,rdiv-method,exception-message-attribute,invalid-str-codec,sys-max-int,bad-python3-import,deprecated-string-function,deprecated-str-translate-call,missing-docstring,redefined-builtin,no-name-in-module,no-self-use,no-member,arguments-differ,attribute-defined-outside-init,non-iterator-returned,eval-used,unexpected-keyword-arg,pointless-string-statement,no-value-for-parameter
+disable=unused-argument,global-statement,too-many-statements,too-many-arguments,too-many-branches,catching-non-exception,too-many-locals,invalid-name,broad-except,raw-checker-failed,locally-disabled,file-ignored,suppressed-message,useless-suppression,deprecated-pragma,missing-docstring,redefined-builtin,no-name-in-module,no-member,arguments-differ,attribute-defined-outside-init,non-iterator-returned,eval-used,unexpected-keyword-arg,pointless-string-statement,no-value-for-parameter,useless-object-inheritance,import-outside-toplevel,wrong-import-order,consider-using-f-string,consider-using-generator,unnecessary-lambda-assignment,implicit-str-concat,global-variable-not-assigned
# Enable the message, report, category or checker with the given id(s). You can
# either give multiple identifier separated by comma (,) or put this option
@@ -92,36 +92,21 @@ max-nested-blocks=5
[BASIC]
-# Naming hint for argument names
-argument-name-hint=(([a-z][a-z0-9_]{2,50})|(_[a-z0-9_]*))$
-
# Regular expression matching correct argument names
argument-rgx=(([a-z][a-z0-9_]{2,50})|(_[a-z0-9_]*))$
-# Naming hint for attribute names
-attr-name-hint=(([a-z][a-z0-9_]{2,30})|(_[a-z0-9_]*))$
-
# Regular expression matching correct attribute names
attr-rgx=(([a-z][a-z0-9_]{2,50})|(_[a-z0-9_]*))$
# Bad variable names which should always be refused, separated by a comma
bad-names=foo,bar,baz,toto,tutu,tata
-# Naming hint for class attribute names
-class-attribute-name-hint=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$
-
# Regular expression matching correct class attribute names
class-attribute-rgx=([A-Za-z_][A-Za-z0-9_]{2,50}|(__.*__))$
-# Naming hint for class names
-class-name-hint=[A-Z_][a-zA-Z0-9]+$
-
# Regular expression matching correct class names
class-rgx=[A-Z_][a-zA-Z0-9]+$
-# Naming hint for constant names
-const-name-hint=(([A-Za-z_][A-Za-z0-9_]*)|(__.*__))$
-
# Regular expression matching correct constant names
const-rgx=(([A-Za-z_][A-Za-z0-9_]*)|(__.*__))$
@@ -129,9 +114,6 @@ const-rgx=(([A-Za-z_][A-Za-z0-9_]*)|(__.*__))$
# ones are exempt.
docstring-min-length=-1
-# Naming hint for function names
-function-name-hint=(([a-z][a-zA-Z0-9_]{2,50})|(_[a-z0-9_]*))$
-
# Regular expression matching correct function names
function-rgx=(([a-z][a-zA-Z0-9_]{2,50})|(_[a-z0-9_]*))$
@@ -141,21 +123,12 @@ good-names=i,j,k,ex,Run,_
# Include a hint for the correct naming format with invalid-name
include-naming-hint=no
-# Naming hint for inline iteration names
-inlinevar-name-hint=[A-Za-z_][A-Za-z0-9_]*$
-
# Regular expression matching correct inline iteration names
inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$
-# Naming hint for method names
-method-name-hint=(([a-z][a-z0-9_]{2,50})|(_[a-z0-9_]*))$
-
# Regular expression matching correct method names
method-rgx=(([a-z][a-z0-9_]{2,50})|(_[a-z0-9_]*))$
-# Naming hint for module names
-module-name-hint=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
-
# Regular expression matching correct module names
module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
@@ -171,9 +144,6 @@ no-docstring-rgx=^_
# to this list to register other decorators that produce valid properties.
property-classes=abc.abstractproperty
-# Naming hint for variable names
-variable-name-hint=(([a-z][a-z0-9_]{2,50})|(_[a-z0-9_]*))$
-
# Regular expression matching correct variable names
variable-rgx=(([a-z][a-z0-9_]{2,50})|(_[a-z0-9_]*))$
@@ -197,13 +167,7 @@ indent-string=' '
max-line-length=100
# Maximum number of lines in a module
-max-module-lines=1500
-
-# List of optional constructs for which whitespace checking is disabled. `dict-
-# separator` is used to allow tabulation in dicts, etc.: {1 : 1,\n222: 2}.
-# `trailing-comma` allows a space between comma and closing bracket: (a, ).
-# `empty-line` allows space-only lines.
-no-space-check=trailing-comma,dict-separator
+max-module-lines=1600
# Allow the body of a class to be on the same line as the declaration if body
# contains single statement.
@@ -361,7 +325,7 @@ max-args=12
max-attributes=32
# Maximum number of boolean expressions in a if statement
-max-bool-expr=5
+max-bool-expr=6
# Maximum number of branch for function / method body
max-branches=30
diff --git a/requirements-dev.txt b/requirements-dev.txt
index 276d014..5522a05 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -1,9 +1,11 @@
+# Python requirements to setup a development environment to be able to do
+# anything directly or with tox: run unit tests, run code quality checks, build
+# the docs, ...
+
+-c https://opendev.org/openstack/requirements/raw/branch/stable/yoga/upper-constraints.txt
-r requirements.txt
-docutils==0.14.0
-flake8>=2.3.0
-pylint>=1.3
-pep8>=1.5.7
-sphinx>=1.4.0
-sphinx_rtd_theme>=0.2.4
-tox>=2.3.0
-mock>=2.0.0
+-r test-requirements.txt
+-r docs/requirements.txt
+
+# Install tox with the same version as on OPNFV build servers
+tox==3.21.4
diff --git a/requirements.txt b/requirements.txt
index 9eb76c4..488aa5f 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,24 +1,28 @@
+# Python dependencies required to run nfvbench and behave_tests
+#
# The order of packages is significant, because pip processes them in the order
# of appearance. Changing the order has an impact on the overall integration
# process, which may cause wedges in the gate later.
-pbr>=3.1.1
+pbr!=2.1.0 # Apache-2.0
attrdict>=2.0.0
bitmath>=1.3.1.1
-paramiko>=1.14.0
-prettytable>=0.7.2
-pytz>=2016.4
-six>=1.10.0
-python-glanceclient==2.6.0
-python-neutronclient<3,>=2.3.6
-python-novaclient>=2.18.1
-python-openstackclient>=0.4.1
-python-keystoneclient>=1.0.0
-pyyaml>=3.11
-pyzmq>=15.3.0
-requests>=2.13.0
-tabulate>=0.7.5
-flask>=0.12
+pytz # MIT
+python-glanceclient # Apache-2.0
+python-neutronclient # Apache-2.0
+python-novaclient # Apache-2.0
+python-openstackclient # Apache-2.0
+python-keystoneclient!=2.1.0 # Apache-2.0
+PyYAML # MIT
+tabulate # MIT
+Flask!=0.11 # BSD
fluent-logger>=0.5.3
-netaddr>=0.7.19
+netaddr # BSD
+hdrhistogram>=0.8.0
+
+# Extra requirements for behave_tests:
+requests!=2.20.0,!=2.24.0 # Apache-2.0
+retry>=0.9.2
+xtesting>=0.92.0
+behave>=1.2.6
diff --git a/setup.cfg b/setup.cfg
index e1b1ddf..d570851 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -29,17 +29,20 @@ classifier =
Operating System :: POSIX :: Linux
Operating System :: MacOS
Programming Language :: Python
- Programming Language :: Python :: 2
- Programming Language :: Python :: 2.7
+ Programming Language :: Python :: 3
+ Programming Language :: Python :: 3.8
[files]
packages =
nfvbench
+ behave_tests
[entry_points]
console_scripts =
nfvbench = nfvbench.nfvbench:main
nfvbench_client = client.nfvbench_client:main
+xtesting.testcase =
+ nfvbench_behaveframework = behave_tests.behavedriver:BehaveDriver
[compile_catalog]
directory = nfvbench/locale
diff --git a/setup.py b/setup.py
index bf772f3..f63cc23 100644
--- a/setup.py
+++ b/setup.py
@@ -13,27 +13,9 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-from setuptools.command.test import test
-from setuptools import setup
-import sys
+# THIS FILE IS MANAGED BY THE GLOBAL REQUIREMENTS REPO - DO NOT EDIT
+import setuptools
-
-class Tox(test):
- def initialize_options(self):
- test.initialize_options(self)
- self.tox_args = None
-
- def finalize_options(self):
- test.finalize_options(self)
- self.test_args = []
- self.test_suite = True
-
- def run_tests(self):
- import tox
- sys.exit(tox.cmdline())
-
-
-if __name__ == '__main__':
- setup(setup_requires=['pbr'], pbr=True,
- tests_require=['tox'],
- cmdclass={'test': Tox})
+setuptools.setup(
+ setup_requires=['pbr>=2.0.0'],
+ pbr=True)
diff --git a/test-requirements.txt b/test-requirements.txt
index 18f4952..4fa57c3 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -1,18 +1,21 @@
+# Python dependencies required by tox to run unit tests and code quality checks
+#
+# (dependencies required to build and check the docs can be found in
+# docs/requirements.txt)
+#
# The order of packages is significant, because pip processes them in the order
# of appearance. Changing the order has an impact on the overall integration
# process, which may cause wedges in the gate later.
-hacking<0.11,>=0.10.0
+# Requirements for nfvbench unit tests:
+pytest # MIT
+scapy>=2.3.1
+# Extra requirements for behave_tests unit tests:
+pytest-subtests
-coverage>=3.6
-discover
-python-subunit>=0.0.18
-sphinx>=1.4.0
-sphinx_rtd_theme>=0.1.9
-oslosphinx>=2.5.0 # Apache-2.0
-oslotest>=1.10.0 # Apache-2.0
-testrepository>=0.0.18
-testscenarios>=0.4
-testtools>=1.4.0
-pytest>=3.2.2
-pylint>=1.7.1
+# Requirements for pep8 test:
+hacking==5.0.0
+flake8>=3.3.0
+
+# Requirements for linter test:
+pylint==2.15.9
diff --git a/test/mock_trex.py b/test/mock_trex.py
index ed6b20e..cb8a081 100644
--- a/test/mock_trex.py
+++ b/test/mock_trex.py
@@ -30,8 +30,6 @@ except ImportError:
class STLDummy(Exception):
"""Dummy class."""
- pass
-
trex_lib_mod = ModuleType('trex')
sys.modules['trex'] = trex_lib_mod
stl_lib_mod = ModuleType('trex.stl')
@@ -45,7 +43,9 @@ except ImportError:
api_mod.CTRexVmInsFixHwCs = STLDummy
api_mod.Dot1Q = STLDummy
api_mod.Ether = STLDummy
+ api_mod.ARP = STLDummy
api_mod.IP = STLDummy
+ api_mod.ARP = STLDummy
api_mod.STLClient = STLDummy
api_mod.STLFlowLatencyStats = STLDummy
api_mod.STLFlowStats = STLDummy
@@ -53,9 +53,12 @@ except ImportError:
api_mod.STLScVmRaw = STLDummy
api_mod.STLStream = STLDummy
api_mod.STLTXCont = STLDummy
+ api_mod.STLTXMultiBurst = STLDummy
api_mod.STLVmFixChecksumHw = STLDummy
+ api_mod.STLVmFixIpv4 = STLDummy
api_mod.STLVmFlowVar = STLDummy
api_mod.STLVmFlowVarRepeatableRandom = STLDummy
+ api_mod.STLVmTupleGen = STLDummy
api_mod.STLVmWrFlowVar = STLDummy
api_mod.UDP = STLDummy
api_mod.bind_layers = STLDummy
@@ -77,4 +80,3 @@ except ImportError:
def no_op():
"""Empty function."""
- pass
diff --git a/test/test_chains.py b/test/test_chains.py
index 5fd1ce6..d6f32c7 100644
--- a/test/test_chains.py
+++ b/test/test_chains.py
@@ -15,12 +15,12 @@
#
"""Test Chaining functions."""
-from mock_trex import no_op
-
from mock import MagicMock
from mock import patch
import pytest
+from .mock_trex import no_op
+
from nfvbench.chain_runner import ChainRunner
from nfvbench.chaining import ChainException
from nfvbench.chaining import ChainVnfPort
@@ -39,7 +39,7 @@ from nfvbench.summarizer import _annotate_chain_stats
from nfvbench.traffic_client import TrafficClient
from nfvbench.traffic_gen.traffic_base import Latency
from nfvbench.traffic_gen.trex_gen import TRex
-
+from nfvbench import utils
# just to get rid of the unused function warning
no_op()
@@ -70,6 +70,10 @@ def _get_chain_config(sc=ChainType.PVP, scc=1, shared_net=True, rate='1Mpps'):
config.duration_sec = 2
config.interval_sec = 1
config.openrc_file = "dummy.rc"
+ config.no_flow_stats = False
+ config.no_latency_stats = False
+ config.no_latency_streams = False
+ config.loop_vm_arp = True
return config
def test_chain_runner_ext_no_openstack():
@@ -105,7 +109,11 @@ def test_chain_runner_ext_no_openstack():
def _mock_find_image(self, image_name):
return MagicMock()
+def _mock_waiting_servers_deletion(nova_client, servers):
+ return MagicMock()
+
@patch.object(Compute, 'find_image', _mock_find_image)
+@patch.object(utils, 'waiting_servers_deletion', _mock_waiting_servers_deletion)
@patch('nfvbench.chaining.Client')
@patch('nfvbench.chaining.neutronclient')
@patch('nfvbench.chaining.glanceclient')
@@ -137,6 +145,7 @@ def test_pvp_chain_runner():
# Test not admin exception with empty value is raised
@patch.object(Compute, 'find_image', _mock_find_image)
+@patch.object(utils, 'waiting_servers_deletion', _mock_waiting_servers_deletion)
@patch('nfvbench.chaining.Client')
@patch('nfvbench.chaining.neutronclient')
@patch('nfvbench.chaining.glanceclient')
@@ -154,7 +163,7 @@ def _test_pvp_chain_no_admin_no_config_values(config, cred, mock_glance, mock_ne
runner.close()
def test_pvp_chain_runner_no_admin_no_config_values():
- """Test PVP chain runner."""
+ """Test PVP/mock chain runner."""
cred = MagicMock(spec=nfvbench.credentials.Credentials)
cred.is_admin = False
for shared_net in [True, False]:
@@ -166,6 +175,7 @@ def test_pvp_chain_runner_no_admin_no_config_values():
# Test not admin with mandatory parameters values in config file
@patch.object(Compute, 'find_image', _mock_find_image)
+@patch.object(utils, 'waiting_servers_deletion', _mock_waiting_servers_deletion)
@patch('nfvbench.chaining.Client')
@patch('nfvbench.chaining.neutronclient')
@patch('nfvbench.chaining.glanceclient')
@@ -257,7 +267,7 @@ def _check_nfvbench_openstack(sc=ChainType.PVP, l2_loopback=False):
nfvb = NFVBench(config, openstack_spec, config_plugin, factory)
res = nfvb.run({}, 'pytest')
if res['status'] != 'OK':
- print res
+ print(res)
assert res['status'] == 'OK'
@@ -272,6 +282,7 @@ def _mock_get_mac(dummy):
@patch.object(TrafficClient, 'skip_sleep', lambda x: True)
@patch.object(ChainVnfPort, 'get_mac', _mock_get_mac)
@patch.object(TrafficClient, 'is_udp', lambda x, y: True)
+@patch.object(utils, 'waiting_servers_deletion', _mock_waiting_servers_deletion)
@patch('nfvbench.chaining.Client')
@patch('nfvbench.chaining.neutronclient')
@patch('nfvbench.chaining.glanceclient')
diff --git a/test/test_nfvbench.py b/test/test_nfvbench.py
index 0c38fe9..e48fbda 100644
--- a/test/test_nfvbench.py
+++ b/test/test_nfvbench.py
@@ -13,16 +13,17 @@
# License for the specific language governing permissions and limitations
# under the License.
#
-from mock_trex import no_op
+import openstack
+from keystoneauth1.exceptions import HTTPClientError
+from mock import patch
+import pytest
+
+from .mock_trex import no_op
import json
import logging
import sys
-
from attrdict import AttrDict
-from mock import patch
-import pytest
-
from nfvbench.config import config_loads
from nfvbench.credentials import Credentials
from nfvbench.fluentd import FluentLogHandler
@@ -32,8 +33,9 @@ from nfvbench.traffic_client import Device
from nfvbench.traffic_client import GeneratorConfig
from nfvbench.traffic_client import IpBlock
from nfvbench.traffic_client import TrafficClient
-import nfvbench.traffic_gen.traffic_utils as traffic_utils
-
+from nfvbench.traffic_client import TrafficClientException
+from nfvbench.traffic_gen import traffic_utils
+from nfvbench import utils
# just to get rid of the unused function warning
no_op()
@@ -139,13 +141,41 @@ def test_load_from_rate():
# =========================================================================
def test_no_credentials():
- cred = Credentials('/completely/wrong/path/openrc', None, False)
- if cred.rc_auth_url:
- # shouldn't get valid data unless user set environment variables
+ with patch.object(openstack, 'connect') as mock:
+ cred = Credentials('/completely/wrong/path/openrc', None, None, False)
+ if cred.rc_auth_url:
+ # shouldn't get valid data unless user set environment variables
+ assert False
+ else:
+ assert True
+ mock.assert_not_called()
+
+
+def test_clouds_file_credentials():
+ with patch.object(openstack, 'connect') as mock:
+ Credentials(None, 'openstack', None, False)
+ mock.assert_called_once()
+
+
+@patch('nfvbench.nfvbench.credentials')
+def test_is_not_admin(mock_session):
+ mock_session.Session.return_value.get.return_value.raiseError.side_effect = HTTPClientError
+ cred = Credentials(None, 'openstack', None, False)
+ if cred.is_admin:
assert False
else:
assert True
+
+def test_is_admin():
+ with patch.object(openstack, 'connect'):
+ cred = Credentials(None, 'openstack', None, False)
+ if cred.is_admin:
+ assert True
+ else:
+ assert False
+
+
def test_ip_block():
ipb = IpBlock('10.0.0.0', '0.0.0.1', 256)
assert ipb.get_ip() == '10.0.0.0'
@@ -174,6 +204,76 @@ def test_ip_block():
with pytest.raises(IndexError):
ipb.get_ip(256)
+ ipb = IpBlock('10.0.0.0', '0.0.0.2', 128)
+ assert ipb.get_ip() == '10.0.0.0'
+ assert ipb.get_ip(1) == '10.0.0.2'
+ assert ipb.get_ip(127) == '10.0.0.254'
+ with pytest.raises(IndexError):
+ ipb.get_ip(128)
+
+ ipb = IpBlock('10.0.0.0', '0.0.0.4', 64)
+ assert ipb.get_ip() == '10.0.0.0'
+ assert ipb.get_ip(1) == '10.0.0.4'
+ assert ipb.get_ip(63) == '10.0.0.252'
+ with pytest.raises(IndexError):
+ ipb.get_ip(64)
+
+ ipb = IpBlock('10.0.0.0', '0.0.0.10', 1)
+ assert ipb.get_ip() == '10.0.0.0'
+ with pytest.raises(IndexError):
+ ipb.get_ip(1)
+
+
+def test_lcm():
+ assert utils.lcm(10, 2) == 10
+ assert utils.lcm(1, 256) == 256
+ assert utils.lcm(10, 256) == 1280
+ assert utils.lcm(utils.lcm(10, 2), utils.lcm(1, 256))
+ with pytest.raises(TypeError):
+ utils.lcm(0, 0)
+
+
+def test_flow_count_limit():
+ # lcm ip src and dst /32
+ lcm_ip = utils.lcm(1, 1) == 1
+ # port udp src = 1 port udp dst [1,29]
+ src_min = 1
+ src_max = 1
+ dst_min = 1
+ dst_max = 29
+ udp_step = 3
+ udp_src_size = Device.check_range_size(int(src_max) - int(src_min) + 1,
+ udp_step)
+ udp_dst_size = Device.check_range_size(int(dst_max) - int(dst_min) + 1,
+ udp_step)
+ lcm_port = utils.lcm(udp_src_size, udp_dst_size)
+ assert utils.lcm(lcm_ip, lcm_port) < 29
+
+
+def test_check_range_size():
+ assert Device.check_range_size(256, 1) == 256
+ assert Device.check_range_size(256, 3) == 86
+ assert Device.check_range_size(256, 4) == 64
+ assert Device.check_range_size(16, 10) == 2
+ assert Device.check_range_size(1, 10) == 1
+ with pytest.raises(ZeroDivisionError):
+ Device.check_range_size(256, 0)
+
+
+def test_reserve_ip_range():
+ ipb = IpBlock('10.0.0.0', '0.0.0.1', 256)
+ src_ip_first, src_ip_last = ipb.reserve_ip_range(256)
+ assert src_ip_first == "10.0.0.0"
+ assert src_ip_last == "10.0.0.255"
+ ipb = IpBlock('20.0.0.0', '0.0.0.1', 2)
+ src_ip_first, src_ip_last = ipb.reserve_ip_range(2)
+ assert src_ip_first == "20.0.0.0"
+ assert src_ip_last == "20.0.0.1"
+ ipb = IpBlock('30.0.0.0', '0.0.0.1', 2)
+ with pytest.raises(IndexError):
+ ipb.reserve_ip_range(256)
+
+
def check_stream_configs(gen_config):
"""Verify that the range for each chain have adjacent IP ranges without holes between chains."""
config = gen_config.config
@@ -185,12 +285,18 @@ def check_stream_configs(gen_config):
stream_configs = gen_config.devices[0].get_stream_configs()
for index in range(config['service_chain_count']):
stream_cfg = stream_configs[index]
- assert stream_cfg['ip_src_count'] == stream_cfg['ip_dst_count']
+ # ip_src_static == True
+ assert stream_cfg['ip_src_count'] == 1
+ if index == 0:
+ assert stream_cfg['ip_dst_count'] == 4999
+ else:
+ assert stream_cfg['ip_dst_count'] == 5000
+ assert stream_cfg['ip_src_addr'] == Device.int_to_ip(sip)
assert Device.ip_to_int(stream_cfg['ip_src_addr']) == sip
assert Device.ip_to_int(stream_cfg['ip_dst_addr']) == dip
- count = stream_cfg['ip_src_count']
+ count = stream_cfg['ip_dst_count']
cfc += count
- sip += count * step
+ sip += step
dip += count * step
assert cfc == int(config['flow_count'] / 2)
@@ -203,6 +309,661 @@ def test_device_flow_config():
_check_device_flow_config('0.0.0.1')
_check_device_flow_config('0.0.0.2')
+
+def check_udp_stream_configs(gen_config, expected_cfg):
+ """Verify that the range for each chain have adjacent UDP ports without holes between chains."""
+ config = gen_config.config
+ stream_configs = gen_config.devices[0].get_stream_configs()
+ for index in range(config['service_chain_count']):
+ stream_cfg = stream_configs[index]
+ expected = expected_cfg[index]
+ assert stream_cfg['ip_src_addr'] == expected['ip_src_addr']
+ assert stream_cfg['ip_src_addr_max'] == expected['ip_src_addr_max']
+ assert stream_cfg['ip_src_count'] == expected['ip_src_count']
+
+ assert stream_cfg['ip_dst_addr'] == expected['ip_dst_addr']
+ assert stream_cfg['ip_dst_addr_max'] == expected['ip_dst_addr_max']
+ assert stream_cfg['ip_dst_count'] == expected['ip_dst_count']
+
+ assert stream_cfg['udp_src_port'] == expected['udp_src_port']
+ assert stream_cfg['udp_src_port_max'] == expected['udp_src_port_max']
+ assert stream_cfg['udp_src_count'] == expected['udp_src_count']
+
+ assert stream_cfg['udp_dst_port'] == expected['udp_dst_port']
+ assert stream_cfg['udp_dst_port_max'] == expected['udp_dst_port_max']
+ assert stream_cfg['udp_dst_count'] == expected['udp_dst_count']
+
+ lcm_ip = utils.lcm(stream_cfg['ip_src_count'], stream_cfg['ip_dst_count'])
+ udp_src_size = int(stream_cfg['udp_src_port_max']) - int(stream_cfg['udp_src_port']) + 1
+ udp_dst_size = int(stream_cfg['udp_dst_port_max']) - int(stream_cfg['udp_dst_port']) + 1
+ lcm_udp = utils.lcm(udp_src_size, udp_dst_size)
+ assert utils.lcm(lcm_ip, lcm_udp) >= stream_cfg['count']
+
+
+def _check_device_udp_flow_config(param, expected_cfg):
+ config = _get_dummy_tg_config('PVP', '1Mpps',
+ scc=param['scc'],
+ ip_src_static=param['ip_src_static'],
+ fc=param['flow_count'],
+ ip0=param['ip_src_addr'],
+ ip1=param['ip_dst_addr'],
+ step_ip=param['ip_addrs_step'],
+ src_udp=param['udp_src_port'],
+ dst_udp=param['udp_dst_port'],
+ step_udp=param['udp_port_step'])
+ gen_config = GeneratorConfig(config)
+ check_udp_stream_configs(gen_config, expected_cfg)
+
+
+def __get_udp_params():
+ param = {'ip_src_static': True,
+ 'ip_src_addr': '110.0.0.0/32',
+ 'ip_dst_addr': '120.0.0.0/32',
+ 'ip_addrs_step': '0.0.0.1',
+ 'udp_src_port': 53,
+ 'udp_dst_port': 53,
+ 'flow_count': 2,
+ 'scc': 1,
+ 'udp_port_step': '1'}
+ return param
+
+
+def __get_udp_expected_list():
+ expected = {'ip_src_addr': '110.0.0.0',
+ 'ip_src_addr_max': '110.0.0.0',
+ 'ip_src_count': 1,
+ 'ip_dst_addr': '120.0.0.0',
+ 'ip_dst_addr_max': '120.0.0.0',
+ 'ip_dst_count': 1,
+ 'udp_src_port': 53,
+ 'udp_src_port_max': 53,
+ 'udp_src_count': 1,
+ 'udp_dst_port': 53,
+ 'udp_dst_port_max': 53,
+ 'udp_dst_count': 1}
+ return expected
+
+
+def test_device_udp_flow_config_single_ip_single_port():
+ param = __get_udp_params()
+ expected = __get_udp_expected_list()
+ _check_device_udp_flow_config(param, [expected])
+
+
+def test_device_udp_flow_config_single_ip_multiple_src_ports():
+ param = __get_udp_params()
+ expected = __get_udp_expected_list()
+ # Overwrite the udp_src_port value to define a large range of ports
+ # instead of a single port, in order to check if the imposed
+ # flow count is respected. Notice that udp range >> flow count.
+ param['udp_src_port'] = [53, 1024]
+ param['flow_count'] = 10
+ expected['udp_src_port_max'] = 57
+ expected['udp_src_count'] = 5
+ _check_device_udp_flow_config(param, [expected])
+
+
+def test_device_udp_flow_config_multiple_ip_src_single_port():
+ param = __get_udp_params()
+ expected = __get_udp_expected_list()
+ # Re affect the default udp_src_port values and
+ # overwrite the ip_dst_addr value to define a large range of addresses
+ # instead of a single one, in order to check if the imposed
+ # flow count is respected. Notice that the netmask allows a very larger
+ # range of possible addresses than the flow count value.
+ param['udp_src_port'] = 53
+ param['flow_count'] = 10
+ param['ip_src_static'] = False
+ param['ip_dst_addr'] = '120.0.0.0/24'
+
+ expected['udp_src_port_max'] = 53
+ expected['udp_src_count'] = 1
+ expected['ip_dst_addr'] = '120.0.0.0'
+ expected['ip_dst_addr_max'] = '120.0.0.4'
+ expected['ip_dst_count'] = 5
+ _check_device_udp_flow_config(param, [expected])
+
+
+def test_device_udp_flow_config_multiple_ip_src_dst_multiple_src_dst_ports():
+ param = __get_udp_params()
+ expected = __get_udp_expected_list()
+
+ param['udp_src_port'] = [49000, 49031]
+ param['udp_dst_port'] = [50000, 50033]
+ param['ip_src_static'] = False
+ param['flow_count'] = 1000
+ param['ip_src_addr'] = '110.0.0.0/16'
+ param['ip_dst_addr'] = '120.0.0.0/16'
+
+ expected['udp_src_port'] = 49000
+ expected['udp_src_port_max'] = 49024
+ expected['udp_dst_port'] = 50000
+ expected['udp_dst_port_max'] = 50024
+ expected['udp_src_count'] = 25
+ expected['udp_dst_count'] = 25
+ expected['ip_src_addr_max'] = '110.0.1.243'
+ expected['ip_src_count'] = 500
+ expected['ip_dst_addr'] = '120.0.0.0'
+ expected['ip_dst_addr_max'] = '120.0.1.243'
+ expected['ip_dst_count'] = 500
+ _check_device_udp_flow_config(param, [expected])
+
+
+
+
+def test_device_udp_flow_config_random_multiple_ip_src_dst_multiple_src_dst_ports():
+ param = __get_udp_params()
+ expected = __get_udp_expected_list()
+
+ param['udp_src_port'] = [1025, 65000]
+ param['udp_dst_port'] = [1024, 65000]
+ param['ip_src_static'] = False
+ param['ip_addrs_step'] = 'random'
+ param['udp_port_step'] = 'random'
+ param['flow_count'] = 1000000
+ param['ip_src_addr'] = '110.0.0.0/16'
+ param['ip_dst_addr'] = '120.0.0.0/16'
+
+ expected['udp_src_port'] = 1025
+ expected['udp_src_port_max'] = 65000
+ expected['udp_dst_port'] = 1024
+ expected['udp_dst_port_max'] = 65000
+ expected['udp_src_count'] = 62500
+ expected['udp_dst_count'] = 62500
+ expected['ip_src_addr_max'] = '110.0.0.31'
+ expected['ip_src_count'] = 32
+ expected['ip_dst_addr'] = '120.0.0.0'
+ expected['ip_dst_addr_max'] = '120.0.0.31'
+ expected['ip_dst_count'] = 32
+ _check_device_udp_flow_config(param, [expected])
+
+def test_device_udp_flow_config_random_multiple_ip_srcstatic_dst_multiple_src_dst_ports():
+ param = __get_udp_params()
+ expected = __get_udp_expected_list()
+
+ param['udp_src_port'] = [1025, 65000]
+ param['udp_dst_port'] = [1024, 65000]
+ param['ip_src_static'] = True
+ param['ip_addrs_step'] = 'random'
+ param['udp_port_step'] = 'random'
+ param['flow_count'] = 1000000
+ param['ip_src_addr'] = '110.0.0.0/16'
+ param['ip_dst_addr'] = '120.0.0.0/16'
+
+ expected['udp_src_port'] = 1025
+ expected['udp_src_port_max'] = 65000
+ expected['udp_dst_port'] = 1024
+ expected['udp_dst_port_max'] = 65000
+ expected['udp_src_count'] = 1
+ expected['udp_dst_count'] = 62500
+ expected['ip_src_addr_max'] = '110.0.0.0'
+ expected['ip_src_count'] = 1
+ expected['ip_dst_addr'] = '120.0.0.0'
+ expected['ip_dst_addr_max'] = '120.0.0.31'
+ expected['ip_dst_count'] = 32
+ _check_device_udp_flow_config(param, [expected])
+
+
+
+def test_device_udp_flow_config_single_ip_src_dst_multiple_src_dst_ports():
+ param = __get_udp_params()
+ expected = __get_udp_expected_list()
+
+ param['udp_src_port'] = [49152, 49154]
+ param['udp_dst_port'] = [50001, 50005]
+ param['ip_src_static'] = False
+ param['flow_count'] = 10
+ param['ip_src_addr'] = '110.0.0.0/32'
+ param['ip_dst_addr'] = '120.0.0.0/32'
+
+ expected['udp_src_port'] = 49152
+ expected['udp_src_port_max'] = 49152
+ expected['udp_dst_port'] = 50001
+ expected['udp_dst_port_max'] = 50005
+ expected['udp_src_count'] = 1
+ expected['udp_dst_count'] = 5
+ expected['ip_src_addr_max'] = '110.0.0.0'
+ expected['ip_src_count'] = 1
+ expected['ip_dst_addr'] = '120.0.0.0'
+ expected['ip_dst_addr_max'] = '120.0.0.0'
+ expected['ip_dst_count'] = 1
+ _check_device_udp_flow_config(param, [expected])
+
+
+def test_device_udp_flow_config_single_ip_src_dst_single_src_multiple_dst_ports():
+ param = __get_udp_params()
+ expected = __get_udp_expected_list()
+
+ param['udp_src_port'] = 49152
+ param['udp_dst_port'] = [50001, 50029]
+ param['udp_port_step'] = '3'
+ param['flow_count'] = 58
+ param['ip_src_addr'] = '110.0.0.0/32'
+ param['ip_dst_addr'] = '120.0.0.0/32'
+
+ expected['udp_src_port'] = 49152
+ expected['udp_src_port_max'] = 49152
+ expected['udp_dst_port'] = 50001
+ expected['udp_dst_port_max'] = 50029
+ expected['udp_src_count'] = 1
+ expected['udp_dst_count'] = 29
+ expected['ip_src_addr_max'] = '110.0.0.0'
+ expected['ip_src_count'] = 1
+ expected['ip_dst_addr'] = '120.0.0.0'
+ expected['ip_dst_addr_max'] = '120.0.0.0'
+ expected['ip_dst_count'] = 1
+ with pytest.raises(TrafficClientException):
+ _check_device_udp_flow_config(param, [expected])
+
+
+def test_device_udp_flow_config_scc3():
+ param = __get_udp_params()
+ expected = __get_udp_expected_list()
+
+ param['scc'] = 3
+ param['udp_src_port'] = [49000, 49031]
+ param['udp_dst_port'] = [50000, 50033]
+ param['ip_src_static'] = False
+ param['flow_count'] = 10000
+ param['ip_src_addr'] = '110.0.0.0/16'
+ param['ip_dst_addr'] = '120.0.0.0/16'
+
+ expected_cfg = []
+ # chain 0
+ expected_scc0 = dict(expected)
+ expected_scc0['udp_src_port'] = 49000
+ expected_scc0['udp_src_port_max'] = 49016
+ expected_scc0['udp_dst_port'] = 50000
+ expected_scc0['udp_dst_port_max'] = 50033
+ expected_scc0['udp_src_count'] = 17
+ expected_scc0['udp_dst_count'] = 34
+ expected_scc0['ip_src_addr_max'] = '110.0.6.129'
+ expected_scc0['ip_src_count'] = 1666
+ expected_scc0['ip_dst_addr'] = '120.0.0.0'
+ expected_scc0['ip_dst_addr_max'] = '120.0.6.129'
+ expected_scc0['ip_dst_count'] = 1666
+ expected_cfg.append(expected_scc0)
+
+ # chain 1
+ expected_scc1 = dict(expected)
+ expected_scc1['udp_src_port'] = 49000
+ expected_scc1['udp_src_port_max'] = 49000
+ expected_scc1['udp_dst_port'] = 50000
+ expected_scc1['udp_dst_port_max'] = 50000
+ expected_scc1['udp_src_count'] = 1
+ expected_scc1['udp_dst_count'] = 1
+ expected_scc1['ip_src_addr'] = '110.0.6.130'
+ expected_scc1['ip_src_addr_max'] = '110.0.13.4'
+ expected_scc1['ip_src_count'] = 1667
+ expected_scc1['ip_dst_addr'] = '120.0.6.130'
+ expected_scc1['ip_dst_addr_max'] = '120.0.13.4'
+ expected_scc1['ip_dst_count'] = 1667
+ expected_cfg.append(expected_scc1)
+
+ # chain 2
+ expected_scc2 = dict(expected)
+ expected_scc2['udp_src_port'] = 49000
+ expected_scc2['udp_src_port_max'] = 49000
+ expected_scc2['udp_dst_port'] = 50000
+ expected_scc2['udp_dst_port_max'] = 50000
+ expected_scc2['udp_src_count'] = 1
+ expected_scc2['udp_dst_count'] = 1
+ expected_scc2['ip_src_addr'] = '110.0.13.5'
+ expected_scc2['ip_src_addr_max'] = '110.0.19.135'
+ expected_scc2['ip_src_count'] = 1667
+ expected_scc2['ip_dst_addr'] = '120.0.13.5'
+ expected_scc2['ip_dst_addr_max'] = '120.0.19.135'
+ expected_scc2['ip_dst_count'] = 1667
+ expected_cfg.append(expected_scc2)
+
+ _check_device_udp_flow_config(param, expected_cfg)
+
+
+def test_device_udp_flow_config_doc_example1(caplog):
+ caplog.clear()
+ caplog.set_level(logging.INFO)
+ param = __get_udp_params()
+ expected = __get_udp_expected_list()
+
+ # Multiflow unitary test corresponding to first example in documentation
+ param['scc'] = 3
+ param['udp_src_port'] = 53
+ param['udp_dst_port'] = 53
+ param['ip_src_static'] = True
+ param['flow_count'] = 100
+ param['ip_src_addr'] = '110.0.0.0/8'
+ param['ip_dst_addr'] = '120.0.0.0/8'
+
+ expected_cfg = []
+ # chain 0
+ expected_scc0 = dict(expected)
+ expected_scc0['udp_src_port'] = 53
+ expected_scc0['udp_src_port_max'] = 53
+ expected_scc0['udp_dst_port'] = 53
+ expected_scc0['udp_dst_port_max'] = 53
+ expected_scc0['udp_src_count'] = 1
+ expected_scc0['udp_dst_count'] = 1
+ expected_scc0['ip_src_addr'] = '110.0.0.0'
+ expected_scc0['ip_src_addr_max'] = '110.0.0.0'
+ expected_scc0['ip_src_count'] = 1
+ expected_scc0['ip_dst_addr'] = '120.0.0.0'
+ expected_scc0['ip_dst_addr_max'] = '120.0.0.15'
+ expected_scc0['ip_dst_count'] = 16
+ expected_cfg.append(expected_scc0)
+
+ # chain 1
+ expected_scc1 = dict(expected)
+ expected_scc1['udp_src_port'] = 53
+ expected_scc1['udp_src_port_max'] = 53
+ expected_scc1['udp_dst_port'] = 53
+ expected_scc1['udp_dst_port_max'] = 53
+ expected_scc1['udp_src_count'] = 1
+ expected_scc1['udp_dst_count'] = 1
+ expected_scc1['ip_src_addr'] = '110.0.0.1'
+ expected_scc1['ip_src_addr_max'] = '110.0.0.1'
+ expected_scc1['ip_src_count'] = 1
+ expected_scc1['ip_dst_addr'] = '120.0.0.16'
+ expected_scc1['ip_dst_addr_max'] = '120.0.0.32'
+ expected_scc1['ip_dst_count'] = 17
+ expected_cfg.append(expected_scc1)
+
+ # chain 2
+ expected_scc2 = dict(expected)
+ expected_scc2['udp_src_port'] = 53
+ expected_scc2['udp_src_port_max'] = 53
+ expected_scc2['udp_dst_port'] = 53
+ expected_scc2['udp_dst_port_max'] = 53
+ expected_scc2['udp_src_count'] = 1
+ expected_scc2['udp_dst_count'] = 1
+ expected_scc2['ip_src_addr'] = '110.0.0.2'
+ expected_scc2['ip_src_addr_max'] = '110.0.0.2'
+ expected_scc2['ip_src_count'] = 1
+ expected_scc2['ip_dst_addr'] = '120.0.0.33'
+ expected_scc2['ip_dst_addr_max'] = '120.0.0.49'
+ expected_scc2['ip_dst_count'] = 17
+ expected_cfg.append(expected_scc2)
+
+ _check_device_udp_flow_config(param, expected_cfg)
+ assert "Current values of ip_addrs_step and/or udp_port_step properties" not in caplog.text
+
+
+def test_device_udp_flow_config_doc_example2(caplog):
+ caplog.clear()
+ caplog.set_level(logging.INFO)
+ param = __get_udp_params()
+ expected = __get_udp_expected_list()
+
+ # Multiflow unitary test corresponding to second example in documentation
+ param['scc'] = 3
+ param['udp_src_port'] = 53
+ param['udp_dst_port'] = 53
+ param['ip_src_static'] = True
+ param['ip_addrs_step'] = 'random'
+ param['flow_count'] = 100
+ param['ip_src_addr'] = '110.0.0.0/8'
+ param['ip_dst_addr'] = '120.0.0.0/8'
+
+ expected_cfg = []
+ # chain 0
+ expected_scc0 = dict(expected)
+ expected_scc0['udp_src_port'] = 53
+ expected_scc0['udp_src_port_max'] = 53
+ expected_scc0['udp_dst_port'] = 53
+ expected_scc0['udp_dst_port_max'] = 53
+ expected_scc0['udp_src_count'] = 1
+ expected_scc0['udp_dst_count'] = 1
+ expected_scc0['ip_src_addr'] = '110.0.0.0'
+ expected_scc0['ip_src_addr_max'] = '110.0.0.0'
+ expected_scc0['ip_src_count'] = 1
+ expected_scc0['ip_dst_addr'] = '120.0.0.0'
+ expected_scc0['ip_dst_addr_max'] = '120.0.0.15'
+ expected_scc0['ip_dst_count'] = 16
+ expected_cfg.append(expected_scc0)
+
+ # chain 1
+ expected_scc1 = dict(expected)
+ expected_scc1['udp_src_port'] = 53
+ expected_scc1['udp_src_port_max'] = 53
+ expected_scc1['udp_dst_port'] = 53
+ expected_scc1['udp_dst_port_max'] = 53
+ expected_scc1['udp_src_count'] = 1
+ expected_scc1['udp_dst_count'] = 1
+ expected_scc1['ip_src_addr'] = '110.0.0.1'
+ expected_scc1['ip_src_addr_max'] = '110.0.0.1'
+ expected_scc1['ip_src_count'] = 1
+ expected_scc1['ip_dst_addr'] = '120.0.0.16'
+ expected_scc1['ip_dst_addr_max'] = '120.0.0.32'
+ expected_scc1['ip_dst_count'] = 17
+ expected_cfg.append(expected_scc1)
+
+ # chain 2
+ expected_scc2 = dict(expected)
+ expected_scc2['udp_src_port'] = 53
+ expected_scc2['udp_src_port_max'] = 53
+ expected_scc2['udp_dst_port'] = 53
+ expected_scc2['udp_dst_port_max'] = 53
+ expected_scc2['udp_src_count'] = 1
+ expected_scc2['udp_dst_count'] = 1
+ expected_scc2['ip_src_addr'] = '110.0.0.2'
+ expected_scc2['ip_src_addr_max'] = '110.0.0.2'
+ expected_scc2['ip_src_count'] = 1
+ expected_scc2['ip_dst_addr'] = '120.0.0.33'
+ expected_scc2['ip_dst_addr_max'] = '120.0.0.49'
+ expected_scc2['ip_dst_count'] = 17
+ expected_cfg.append(expected_scc2)
+
+ _check_device_udp_flow_config(param, expected_cfg)
+ assert "Current values of ip_addrs_step and/or udp_port_step properties" not in caplog.text
+
+
+def test_device_udp_flow_config_doc_example3(caplog):
+ caplog.clear()
+ param = __get_udp_params()
+ expected = __get_udp_expected_list()
+
+ # Multiflow unitary test corresponding to third example in documentation
+ param['scc'] = 3
+ param['udp_src_port'] = 53
+ param['udp_dst_port'] = 53
+ param['ip_src_static'] = True
+ param['ip_addrs_step'] = '0.0.0.5'
+ param['flow_count'] = 100
+ param['ip_src_addr'] = '110.0.0.0/8'
+ param['ip_dst_addr'] = '120.0.0.0/8'
+
+ expected_cfg = []
+ # chain 0
+ expected_scc0 = dict(expected)
+ expected_scc0['udp_src_port'] = 53
+ expected_scc0['udp_src_port_max'] = 53
+ expected_scc0['udp_dst_port'] = 53
+ expected_scc0['udp_dst_port_max'] = 53
+ expected_scc0['udp_src_count'] = 1
+ expected_scc0['udp_dst_count'] = 1
+ expected_scc0['ip_src_addr'] = '110.0.0.0'
+ expected_scc0['ip_src_addr_max'] = '110.0.0.0'
+ expected_scc0['ip_src_count'] = 1
+ expected_scc0['ip_dst_addr'] = '120.0.0.0'
+ expected_scc0['ip_dst_addr_max'] = '120.0.0.75'
+ expected_scc0['ip_dst_count'] = 16
+ expected_cfg.append(expected_scc0)
+
+ # chain 1
+ expected_scc1 = dict(expected)
+ expected_scc1['udp_src_port'] = 53
+ expected_scc1['udp_src_port_max'] = 53
+ expected_scc1['udp_dst_port'] = 53
+ expected_scc1['udp_dst_port_max'] = 53
+ expected_scc1['udp_src_count'] = 1
+ expected_scc1['udp_dst_count'] = 1
+ expected_scc1['ip_src_addr'] = '110.0.0.5'
+ expected_scc1['ip_src_addr_max'] = '110.0.0.5'
+ expected_scc1['ip_src_count'] = 1
+ expected_scc1['ip_dst_addr'] = '120.0.0.80'
+ expected_scc1['ip_dst_addr_max'] = '120.0.0.160'
+ expected_scc1['ip_dst_count'] = 17
+ expected_cfg.append(expected_scc1)
+
+ # chain 2
+ expected_scc2 = dict(expected)
+ expected_scc2['udp_src_port'] = 53
+ expected_scc2['udp_src_port_max'] = 53
+ expected_scc2['udp_dst_port'] = 53
+ expected_scc2['udp_dst_port_max'] = 53
+ expected_scc2['udp_src_count'] = 1
+ expected_scc2['udp_dst_count'] = 1
+ expected_scc2['ip_src_addr'] = '110.0.0.10'
+ expected_scc2['ip_src_addr_max'] = '110.0.0.10'
+ expected_scc2['ip_src_count'] = 1
+ expected_scc2['ip_dst_addr'] = '120.0.0.165'
+ expected_scc2['ip_dst_addr_max'] = '120.0.0.245'
+ expected_scc2['ip_dst_count'] = 17
+ expected_cfg.append(expected_scc2)
+
+ caplog.set_level(logging.INFO)
+ _check_device_udp_flow_config(param, expected_cfg)
+ assert "Current values of ip_addrs_step and/or udp_port_step properties" not in caplog.text
+
+
+def test_device_udp_flow_config_doc_example4(caplog):
+ caplog.clear()
+ param = __get_udp_params()
+ expected = __get_udp_expected_list()
+
+ # Multiflow unitary test corresponding to fourth example in documentation
+ param['scc'] = 3
+ param['udp_src_port'] = [10, 14]
+ param['udp_dst_port'] = [20, 25]
+ param['ip_src_static'] = True
+ param['ip_addrs_step'] = '0.0.0.1'
+ param['udp_port_step'] = 'random'
+ param['flow_count'] = 100
+ param['ip_src_addr'] = '110.0.0.0/29'
+ param['ip_dst_addr'] = '120.0.0.0/30'
+
+ expected_cfg = []
+ # chain 0
+ expected_scc0 = dict(expected)
+ expected_scc0['udp_src_port'] = 10
+ expected_scc0['udp_src_port_max'] = 14
+ expected_scc0['udp_dst_port'] = 20
+ expected_scc0['udp_dst_port_max'] = 25
+ expected_scc0['udp_src_count'] = 5
+ expected_scc0['udp_dst_count'] = 6
+ expected_scc0['ip_src_addr'] = '110.0.0.0'
+ expected_scc0['ip_src_addr_max'] = '110.0.0.0'
+ expected_scc0['ip_src_count'] = 1
+ expected_scc0['ip_dst_addr'] = '120.0.0.0'
+ expected_scc0['ip_dst_addr_max'] = '120.0.0.0'
+ expected_scc0['ip_dst_count'] = 1
+ expected_cfg.append(expected_scc0)
+
+ # chain 1
+ expected_scc1 = dict(expected)
+ expected_scc1['udp_src_port'] = 10
+ expected_scc1['udp_src_port_max'] = 14
+ expected_scc1['udp_dst_port'] = 20
+ expected_scc1['udp_dst_port_max'] = 25
+ expected_scc1['udp_src_count'] = 5
+ expected_scc1['udp_dst_count'] = 6
+ expected_scc1['ip_src_addr'] = '110.0.0.1'
+ expected_scc1['ip_src_addr_max'] = '110.0.0.1'
+ expected_scc1['ip_src_count'] = 1
+ expected_scc1['ip_dst_addr'] = '120.0.0.1'
+ expected_scc1['ip_dst_addr_max'] = '120.0.0.1'
+ expected_scc1['ip_dst_count'] = 1
+ expected_cfg.append(expected_scc1)
+
+ # chain 2
+ expected_scc2 = dict(expected)
+ expected_scc2['udp_src_port'] = 10
+ expected_scc2['udp_src_port_max'] = 14
+ expected_scc2['udp_dst_port'] = 20
+ expected_scc2['udp_dst_port_max'] = 25
+ expected_scc2['udp_src_count'] = 5
+ expected_scc2['udp_dst_count'] = 6
+ expected_scc2['ip_src_addr'] = '110.0.0.2'
+ expected_scc2['ip_src_addr_max'] = '110.0.0.2'
+ expected_scc2['ip_src_count'] = 1
+ expected_scc2['ip_dst_addr'] = '120.0.0.2'
+ expected_scc2['ip_dst_addr_max'] = '120.0.0.2'
+ expected_scc2['ip_dst_count'] = 1
+ expected_cfg.append(expected_scc2)
+ caplog.set_level(logging.INFO)
+ _check_device_udp_flow_config(param, expected_cfg)
+ assert "Current values of ip_addrs_step and/or udp_port_step properties" in caplog.text
+ assert "udp_port_step='1' (previous value: udp_port_step='random'" in caplog.text
+
+
+def test_device_udp_flow_config_no_random_steps_overridden(caplog):
+ caplog.clear()
+ param = __get_udp_params()
+ expected = __get_udp_expected_list()
+
+ # Multiflow unitary test corresponding to fifth example in documentation
+ param['scc'] = 3
+ param['udp_src_port'] = [10, 14]
+ param['udp_dst_port'] = [20, 25]
+ param['ip_src_static'] = True
+ param['ip_addrs_step'] = 'random'
+ param['udp_port_step'] = 'random'
+ param['flow_count'] = 100
+ param['ip_src_addr'] = '110.0.0.0/29'
+ param['ip_dst_addr'] = '120.0.0.0/30'
+
+ expected_cfg = []
+ # chain 0
+ expected_scc0 = dict(expected)
+ expected_scc0['udp_src_port'] = 10
+ expected_scc0['udp_src_port_max'] = 14
+ expected_scc0['udp_dst_port'] = 20
+ expected_scc0['udp_dst_port_max'] = 25
+ expected_scc0['udp_src_count'] = 5
+ expected_scc0['udp_dst_count'] = 6
+ expected_scc0['ip_src_addr'] = '110.0.0.0'
+ expected_scc0['ip_src_addr_max'] = '110.0.0.0'
+ expected_scc0['ip_src_count'] = 1
+ expected_scc0['ip_dst_addr'] = '120.0.0.0'
+ expected_scc0['ip_dst_addr_max'] = '120.0.0.0'
+ expected_scc0['ip_dst_count'] = 1
+ expected_cfg.append(expected_scc0)
+
+ # chain 1
+ expected_scc1 = dict(expected)
+ expected_scc1['udp_src_port'] = 10
+ expected_scc1['udp_src_port_max'] = 14
+ expected_scc1['udp_dst_port'] = 20
+ expected_scc1['udp_dst_port_max'] = 25
+ expected_scc1['udp_src_count'] = 5
+ expected_scc1['udp_dst_count'] = 6
+ expected_scc1['ip_src_addr'] = '110.0.0.1'
+ expected_scc1['ip_src_addr_max'] = '110.0.0.1'
+ expected_scc1['ip_src_count'] = 1
+ expected_scc1['ip_dst_addr'] = '120.0.0.1'
+ expected_scc1['ip_dst_addr_max'] = '120.0.0.1'
+ expected_scc1['ip_dst_count'] = 1
+ expected_cfg.append(expected_scc1)
+
+ # chain 2
+ expected_scc2 = dict(expected)
+ expected_scc2['udp_src_port'] = 10
+ expected_scc2['udp_src_port_max'] = 14
+ expected_scc2['udp_dst_port'] = 20
+ expected_scc2['udp_dst_port_max'] = 25
+ expected_scc2['udp_src_count'] = 5
+ expected_scc2['udp_dst_count'] = 6
+ expected_scc2['ip_src_addr'] = '110.0.0.2'
+ expected_scc2['ip_src_addr_max'] = '110.0.0.2'
+ expected_scc2['ip_src_count'] = 1
+ expected_scc2['ip_dst_addr'] = '120.0.0.2'
+ expected_scc2['ip_dst_addr_max'] = '120.0.0.2'
+ expected_scc2['ip_dst_count'] = 1
+ expected_cfg.append(expected_scc2)
+ caplog.set_level(logging.INFO)
+ _check_device_udp_flow_config(param, expected_cfg)
+ assert "Current values of ip_addrs_step and/or udp_port_step properties" not in caplog.text
+
+
def test_config():
refcfg = {1: 100, 2: {21: 100, 22: 200}, 3: None}
res1 = {1: 10, 2: {21: 100, 22: 200}, 3: None}
@@ -291,7 +1052,8 @@ def assert_ndr_pdr(stats, ndr, ndr_dr, pdr, pdr_dr):
assert_equivalence(pdr_dr, stats['pdr']['stats']['overall']['drop_percentage'])
def _get_dummy_tg_config(chain_type, rate, scc=1, fc=10, step_ip='0.0.0.1',
- ip0='10.0.0.0/8', ip1='20.0.0.0/8'):
+ ip0='10.0.0.0/8', ip1='20.0.0.0/8',
+ step_udp='1', src_udp=None, dst_udp=None, ip_src_static=True):
return AttrDict({
'traffic_generator': {'host_name': 'nfvbench_tg',
'default_profile': 'dummy',
@@ -303,14 +1065,16 @@ def _get_dummy_tg_config(chain_type, rate, scc=1, fc=10, step_ip='0.0.0.1',
{'port': 1, 'pci': '0.0'}]}],
'ip_addrs_step': step_ip,
'ip_addrs': [ip0, ip1],
+ 'ip_src_static': ip_src_static,
'tg_gateway_ip_addrs': ['1.1.0.100', '2.2.0.100'],
'tg_gateway_ip_addrs_step': step_ip,
'gateway_ip_addrs': ['1.1.0.2', '2.2.0.2'],
'gateway_ip_addrs_step': step_ip,
'mac_addrs_left': None,
'mac_addrs_right': None,
- 'udp_src_port': None,
- 'udp_dst_port': None},
+ 'udp_src_port': src_udp,
+ 'udp_dst_port': dst_udp,
+ 'udp_port_step': step_udp},
'traffic': {'profile': 'profile_64',
'bidirectional': True},
'traffic_profile': [{'name': 'profile_64', 'l2frame_size': ['64']}],
@@ -330,17 +1094,27 @@ def _get_dummy_tg_config(chain_type, rate, scc=1, fc=10, step_ip='0.0.0.1',
'l2_loopback': False,
'cores': None,
'mbuf_factor': None,
- 'disable_hdrh': None
-
+ 'disable_hdrh': None,
+ 'mbuf_64': None,
+ 'service_mode': False,
+ 'no_flow_stats': False,
+ 'no_latency_stats': False,
+ 'no_latency_streams': False,
+ 'intf_speed': '10Gbps',
+ 'periodic_gratuitous_arp': False,
+ 'gratuitous_arp_pps': 1
})
-def _get_traffic_client():
+def _get_traffic_client(user_info=None):
config = _get_dummy_tg_config('PVP', 'ndr_pdr')
config['vxlan'] = False
+ config['mpls'] = False
config['ndr_run'] = True
config['pdr_run'] = True
config['generator_profile'] = 'dummy'
config['single_run'] = False
+ if user_info:
+ config['user_info'] = user_info
traffic_client = TrafficClient(config)
traffic_client.start_traffic_generator()
traffic_client.set_traffic('64', True)
@@ -401,6 +1175,22 @@ def test_ndr_pdr_low_cpu():
# pp.pprint(results)
@patch.object(TrafficClient, 'skip_sleep', lambda x: True)
+def test_ndr_at_lr_sdn_gw_encapsulation():
+ """Test NDR at line rate with traffic gen outside SUT and connected via SDN GW."""
+ user_info = {'extra_encapsulation_bytes': 28}
+ traffic_client = _get_traffic_client(user_info)
+ tg = traffic_client.gen
+ # this is a perfect sut with no loss at LR
+ tg.set_response_curve(lr_dr=0, ndr=100, max_actual_tx=100, max_11_tx=100)
+ # tx packets should be line rate for 64B and no drops...
+ assert tg.get_tx_pps_dropped_pps(100) == (LR_64B_PPS, 0)
+ # NDR and PDR should be at 100%
+ # traffic_client.ensure_end_to_end()
+ results = traffic_client.get_ndr_and_pdr()
+ assert results['ndr']['stats']['theoretical_tx_rate_bps'] == 15000000000.0
+ assert_ndr_pdr(results, 200.0, 0.0, 200.0, 0.0)
+
+@patch.object(TrafficClient, 'skip_sleep', lambda x: True)
def test_no_openstack():
"""Test nfvbench using main."""
config = _get_dummy_tg_config('EXT', '1000pps')
diff --git a/test/ut_behave_tests/__init__.py b/test/ut_behave_tests/__init__.py
new file mode 100644
index 0000000..0403bca
--- /dev/null
+++ b/test/ut_behave_tests/__init__.py
@@ -0,0 +1 @@
+"""Unit tests for the behave_tests package."""
diff --git a/test/ut_behave_tests/test_data/project=nfvbench&case=characterization&criteria=PASS&page=1.json b/test/ut_behave_tests/test_data/project=nfvbench&case=characterization&criteria=PASS&page=1.json
new file mode 100644
index 0000000..885ab04
--- /dev/null
+++ b/test/ut_behave_tests/test_data/project=nfvbench&case=characterization&criteria=PASS&page=1.json
@@ -0,0 +1,48702 @@
+{
+ "pagination": {
+ "current_page": 1,
+ "total_pages": 2
+ },
+ "results": [
+ {
+ "project_name": "nfvbench",
+ "scenario": "loopback",
+ "stop_date": "2022-04-25 02:32:44",
+ "case_name": "characterization",
+ "build_tag": "TOV5HRPLCZYW",
+ "version": "unknown",
+ "pod_name": "AMICAL",
+ "criteria": "PASS",
+ "installer": "unknown",
+ "_id": "6266084fc0d88e001ca15aaf",
+ "start_date": "2022-04-25 00:13:31",
+ "details": {
+ "tests": [
+ {
+ "status": "passed",
+ "elements": [
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.1 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00011801719665527344,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "64 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "64"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 0.00010013580322265625,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "128 flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "128"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.775161743164062e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.822845458984375e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 10.036147117614746,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 58.26510310173035,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00015854835510253906,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.00029850006103515625,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:17",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.2 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010204315185546875,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "128 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "128"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.870529174804688e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "128 flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "128"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 0.00011563301086425781,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.417533874511719e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.00789332389831543,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 48.191978454589844,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00014138221740722656,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.00026345252990722656,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:18",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.3 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.942054748535156e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "256 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "256"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.655952453613281e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "128 flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "128"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.632110595703125e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.608268737792969e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007787942886352539,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 48.198084115982056,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00012063980102539062,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0002589225769042969,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:19",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.4 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010013580322265625,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "512 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "512"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.72747802734375e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "128 flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "128"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.5367431640625e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.393692016601562e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.0078067779541015625,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 427.4761390686035,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00012445449829101562,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.00032782554626464844,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:20",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.5 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010132789611816406,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "768 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "768"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.5367431640625e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "128 flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "128"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.393692016601562e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.655952453613281e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007827281951904297,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 427.47583389282227,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00011754035949707031,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.00030040740966796875,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:21",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.6 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010085105895996094,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "1024 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "1024"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.751319885253906e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "128 flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "128"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.584426879882812e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.703636169433594e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.008013725280761719,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 427.47237610816956,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00011968612670898438,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.00029087066650390625,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:22",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.7 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00012159347534179688,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "1280 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "1280"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.870529174804688e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "128 flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "128"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.584426879882812e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 0.00011706352233886719,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007834196090698242,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 427.4668493270874,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00012111663818359375,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0003085136413574219,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:23",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.8 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010085105895996094,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "1518 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "1518"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.775161743164062e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "128 flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "128"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.655952453613281e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.870529174804688e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.008010625839233398,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 427.470552444458,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.0001327991485595703,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0003223419189453125,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:24",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.9 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010228157043457031,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "IMIX frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "IMIX"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.751319885253906e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "128 flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "128"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.608268737792969e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.822845458984375e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007843494415283203,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 48.19991326332092,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00011920928955078125,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0002856254577636719,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:25",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.10 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010061264038085938,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "9000 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "9000"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.72747802734375e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "128 flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "128"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 0.0001125335693359375,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.822845458984375e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.0078046321868896484,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 427.4356060028076,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.000133514404296875,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0003294944763183594,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:26",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.11 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010228157043457031,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "64 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "64"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.751319885253906e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "10k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "10k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.441375732421875e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.775161743164062e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007808685302734375,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 54.21188402175903,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.0001220703125,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.00028014183044433594,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:27",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.12 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.942054748535156e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "128 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "128"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.584426879882812e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "10k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "10k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 0.00011420249938964844,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.369850158691406e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.0078582763671875,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 54.213879346847534,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00014543533325195312,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.00026297569274902344,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:28",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.13 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.918212890625e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "256 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "256"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.679794311523438e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "10k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "10k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.679794311523438e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.393692016601562e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007826566696166992,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 54.2158465385437,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.0001385211944580078,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0002658367156982422,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:29",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.14 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010061264038085938,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "512 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "512"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.751319885253906e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "10k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "10k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.72747802734375e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.679794311523438e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.00782465934753418,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 180.64374685287476,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00012063980102539062,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.00026535987854003906,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:30",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.15 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010061264038085938,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "768 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "768"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.703636169433594e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "10k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "10k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.751319885253906e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.72747802734375e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.0077762603759765625,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 433.4992287158966,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00014448165893554688,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.00032806396484375,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:31",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.16 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010180473327636719,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "1024 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "1024"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.489059448242188e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "10k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "10k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.632110595703125e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.822845458984375e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007920503616333008,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 433.49558329582214,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00011801719665527344,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.00028133392333984375,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:32",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.17 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00011992454528808594,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "1280 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "1280"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.608268737792969e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "10k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "10k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.369850158691406e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 0.00012254714965820312,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007806301116943359,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 433.5018527507782,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.0001227855682373047,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0003173351287841797,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:33",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.18 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010251998901367188,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "1518 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "1518"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.72747802734375e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "10k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "10k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.489059448242188e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.679794311523438e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007884740829467773,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 433.5023431777954,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00012040138244628906,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.00028133392333984375,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:34",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.19 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010061264038085938,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "IMIX frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "IMIX"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.846687316894531e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "10k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "10k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.512901306152344e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.417533874511719e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007809638977050781,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 56.228487968444824,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00013756752014160156,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.00026535987854003906,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:35",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.20 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010156631469726562,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "9000 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "9000"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.870529174804688e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "10k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "10k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.965896606445312e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.703636169433594e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.00783085823059082,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 433.4738347530365,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00014972686767578125,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0002911090850830078,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:36",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.21 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010085105895996094,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "64 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "64"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 0.00011968612670898438,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.72747802734375e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.441375732421875e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.00802922248840332,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 60.2336266040802,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00011706352233886719,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0002532005310058594,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:37",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.22 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.942054748535156e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "128 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "128"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 0.00010132789611816406,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.679794311523438e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.703636169433594e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007838964462280273,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 60.23164749145508,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00012135505676269531,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.00025343894958496094,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:38",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.23 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.846687316894531e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "256 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "256"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 0.00011467933654785156,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.894371032714844e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.584426879882812e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.00780177116394043,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 60.239051818847656,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00011920928955078125,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0002503395080566406,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:39",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.24 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.989738464355469e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "512 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "512"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.751319885253906e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.441375732421875e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.560585021972656e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.008019447326660156,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 309.0816767215729,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00012183189392089844,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.00026702880859375,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:40",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.25 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00011706352233886719,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "768 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "768"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.679794311523438e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.441375732421875e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.369850158691406e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007838964462280273,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 433.50160241127014,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00012803077697753906,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0002942085266113281,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:41",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.26 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010156631469726562,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "1024 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "1024"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.870529174804688e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.560585021972656e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.417533874511719e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007815361022949219,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 433.4943425655365,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00011849403381347656,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0003044605255126953,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:42",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.27 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.989738464355469e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "1280 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "1280"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.703636169433594e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 0.00011754035949707031,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.560585021972656e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007854700088500977,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 433.5042459964752,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00012087821960449219,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0002963542938232422,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:43",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.28 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.965896606445312e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "1518 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "1518"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.72747802734375e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.393692016601562e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.465217590332031e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007800579071044922,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 433.4900460243225,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00011992454528808594,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0003037452697753906,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:44",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.29 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010275840759277344,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "IMIX frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "IMIX"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.560585021972656e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.560585021972656e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.72747802734375e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007885217666625977,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 60.23350286483765,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.0001304149627685547,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0002522468566894531,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:45",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.30 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010347366333007812,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "9000 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "9000"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.679794311523438e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.5367431640625e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 0.00011348724365234375,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.008048772811889648,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 433.47489833831787,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00013017654418945312,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0002841949462890625,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:46",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a latency test for a defined frame size and throughput percentage -- @1.1 Frame sizes and throughput percentages",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "latency"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:51",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010156631469726562,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "TRex is restarted",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:52",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:99"
+ },
+ "result": {
+ "duration": 9.703636169433594e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "64 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:53",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "64"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 0.0003788471221923828,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:54",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.870529174804688e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "70% rate of previous scenario",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:55",
+ "match": {
+ "arguments": [
+ {
+ "name": "percentage_rate",
+ "value": "70%"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:129"
+ },
+ "result": {
+ "duration": 0.0002548694610595703,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:56",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.00780487060546875,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "run is started and waiting for result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:57",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 36.23451280593872,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:58",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00015497207641601562,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:62",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a latency test for a defined frame size and throughput percentage -- @1.2 Frame sizes and throughput percentages",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "latency"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:51",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00011444091796875,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "TRex is restarted",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:52",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:99"
+ },
+ "result": {
+ "duration": 0.00011348724365234375,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "64 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:53",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "64"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 0.00010061264038085938,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:54",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.703636169433594e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "90% rate of previous scenario",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:55",
+ "match": {
+ "arguments": [
+ {
+ "name": "percentage_rate",
+ "value": "90%"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:129"
+ },
+ "result": {
+ "duration": 0.00025391578674316406,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:56",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.00824594497680664,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "run is started and waiting for result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:57",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 36.24914073944092,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:58",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.0001533031463623047,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:63",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a latency test for a defined frame size and throughput percentage -- @1.3 Frame sizes and throughput percentages",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "latency"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:51",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00011730194091796875,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "TRex is restarted",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:52",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:99"
+ },
+ "result": {
+ "duration": 0.00011968612670898438,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "768 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:53",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "768"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.72747802734375e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:54",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.584426879882812e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "70% rate of previous scenario",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:55",
+ "match": {
+ "arguments": [
+ {
+ "name": "percentage_rate",
+ "value": "70%"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:129"
+ },
+ "result": {
+ "duration": 0.00025177001953125,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:56",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.0079345703125,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "run is started and waiting for result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:57",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 36.221691846847534,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:58",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.0001533031463623047,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:64",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a latency test for a defined frame size and throughput percentage -- @1.4 Frame sizes and throughput percentages",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "latency"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:51",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.0001347064971923828,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "TRex is restarted",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:52",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:99"
+ },
+ "result": {
+ "duration": 9.72747802734375e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "768 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:53",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "768"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.703636169433594e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:54",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 0.00011730194091796875,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "90% rate of previous scenario",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:55",
+ "match": {
+ "arguments": [
+ {
+ "name": "percentage_rate",
+ "value": "90%"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:129"
+ },
+ "result": {
+ "duration": 0.00024175643920898438,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:56",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.0079345703125,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "run is started and waiting for result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:57",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 36.23504996299744,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:58",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00016355514526367188,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:65",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a latency test for a defined frame size and throughput percentage -- @1.5 Frame sizes and throughput percentages",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "latency"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:51",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00011444091796875,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "TRex is restarted",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:52",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:99"
+ },
+ "result": {
+ "duration": 0.00011706352233886719,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "1518 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:53",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "1518"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.632110595703125e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:54",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 0.00010013580322265625,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "70% rate of previous scenario",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:55",
+ "match": {
+ "arguments": [
+ {
+ "name": "percentage_rate",
+ "value": "70%"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:129"
+ },
+ "result": {
+ "duration": 0.0002498626708984375,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:56",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007980108261108398,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "run is started and waiting for result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:57",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 36.23746657371521,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:58",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.0001513957977294922,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:66",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a latency test for a defined frame size and throughput percentage -- @1.6 Frame sizes and throughput percentages",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "latency"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:51",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00011491775512695312,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "TRex is restarted",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:52",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:99"
+ },
+ "result": {
+ "duration": 9.775161743164062e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "1518 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:53",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "1518"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.584426879882812e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:54",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.512901306152344e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "90% rate of previous scenario",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:55",
+ "match": {
+ "arguments": [
+ {
+ "name": "percentage_rate",
+ "value": "90%"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:129"
+ },
+ "result": {
+ "duration": 0.0002338886260986328,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:56",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007954835891723633,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "run is started and waiting for result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:57",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 36.25133943557739,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:58",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00015425682067871094,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:67",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a latency test for a defined frame size and throughput percentage -- @1.7 Frame sizes and throughput percentages",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "latency"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:51",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00011301040649414062,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "TRex is restarted",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:52",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:99"
+ },
+ "result": {
+ "duration": 9.751319885253906e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "9000 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:53",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "9000"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.655952453613281e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:54",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.560585021972656e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "70% rate of previous scenario",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:55",
+ "match": {
+ "arguments": [
+ {
+ "name": "percentage_rate",
+ "value": "70%"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:129"
+ },
+ "result": {
+ "duration": 0.00024771690368652344,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:56",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.008048534393310547,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "run is started and waiting for result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:57",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 36.24317383766174,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:58",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00015354156494140625,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:68",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a latency test for a defined frame size and throughput percentage -- @1.8 Frame sizes and throughput percentages",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "latency"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:51",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00011491775512695312,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "TRex is restarted",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:52",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:99"
+ },
+ "result": {
+ "duration": 0.00011086463928222656,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "9000 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:53",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "9000"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.608268737792969e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:54",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.489059448242188e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "90% rate of previous scenario",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:55",
+ "match": {
+ "arguments": [
+ {
+ "name": "percentage_rate",
+ "value": "90%"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:129"
+ },
+ "result": {
+ "duration": 0.0002601146697998047,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:56",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007915735244750977,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "run is started and waiting for result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:57",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 36.240649700164795,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:58",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00015354156494140625,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:69",
+ "type": "scenario"
+ }
+ ],
+ "name": "characterization",
+ "keyword": "Feature",
+ "tags": [
+ "characterization"
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:2"
+ }
+ ],
+ "skip_tests": 0,
+ "links": [
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/xtesting.log",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_768-fc_100k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_128-fc_128-rate_ndr-0.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_1518-fc_100k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_512-fc_100k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_64-fc_128-rate_ndr-2.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_9000-fc_10k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_1280-fc_100k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_1024-fc_128-rate_ndr-0.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_64-fc_128-rate_ndr-1.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_64-fc_10k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_768-fc_10k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_128-fc_128-rate_ndr-2.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_IMIX-fc_10k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_256-fc_10k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_9000-fc_100k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/output.html",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_1024-fc_128-rate_ndr-1.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_512-fc_128-rate_ndr-1.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_256-fc_100k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_256-fc_128-rate_ndr-2.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_1024-fc_100k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_128-fc_10k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_9000-fc_100k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_64-fc_100k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-latency-fs_64-fc_100k-rate_70%.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_1280-fc_128-rate_ndr-2.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_256-fc_100k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_512-fc_10k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_768-fc_10k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_768-fc_128-rate_ndr-0.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_512-fc_100k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_IMIX-fc_100k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_64-fc_100k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_1024-fc_100k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_1280-fc_100k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_128-fc_128-rate_ndr-1.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_128-fc_100k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_9000-fc_128-rate_ndr-0.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_9000-fc_128-rate_ndr-1.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_IMIX-fc_128-rate_ndr-1.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_768-fc_10k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_1280-fc_10k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_IMIX-fc_100k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_IMIX-fc_128-rate_ndr-2.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_IMIX-fc_10k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_1518-fc_100k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/behave_tests.log",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_128-fc_10k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-latency-fs_9000-fc_100k-rate_70%.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_512-fc_128-rate_ndr-0.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_9000-fc_128-rate_ndr-2.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_768-fc_100k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/campaign_result.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_9000-fc_10k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_512-fc_10k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_256-fc_10k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_128-fc_100k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-latency-fs_768-fc_100k-rate_90%.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_IMIX-fc_128-rate_ndr-0.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_1280-fc_100k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_64-fc_100k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_1518-fc_128-rate_ndr-0.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/TESTS-characterization-full.xml",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-latency-fs_1518-fc_100k-rate_90%.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_1518-fc_10k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_9000-fc_100k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_256-fc_10k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_64-fc_128-rate_ndr-0.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_1024-fc_128-rate_ndr-2.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_1518-fc_100k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_9000-fc_10k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_1024-fc_10k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_1024-fc_100k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_256-fc_100k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_IMIX-fc_10k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_512-fc_100k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_1024-fc_10k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_1280-fc_128-rate_ndr-0.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_1280-fc_128-rate_ndr-1.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_768-fc_128-rate_ndr-2.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_512-fc_10k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_1518-fc_10k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_768-fc_100k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-latency-fs_64-fc_100k-rate_90%.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_256-fc_128-rate_ndr-0.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_1518-fc_128-rate_ndr-1.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-latency-fs_768-fc_100k-rate_70%.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_256-fc_128-rate_ndr-1.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench.log",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_1518-fc_128-rate_ndr-2.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_64-fc_10k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-latency-fs_9000-fc_100k-rate_90%.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_IMIX-fc_100k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_1518-fc_10k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_1280-fc_10k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_512-fc_128-rate_ndr-2.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_128-fc_10k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_768-fc_128-rate_ndr-1.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-latency-fs_1518-fc_100k-rate_70%.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_1024-fc_10k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_64-fc_10k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_128-fc_100k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/output.json",
+ "http://172.20.73.203:8181/TOV5HRPLCZYW/nfvbench-amical-loopback-_-nfvbench-launcher-latest-devel-nfvbench_loopback_only_test_characterization-run-25/characterization/nfvbench-throughput-fs_1280-fc_10k-rate_ndr-1.json"
+ ],
+ "results": {
+ "latency": [
+ {
+ "input": {
+ "rate": "70%",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_64-fc_100k-rate_70%.json",
+ "frame_sizes": [
+ "64"
+ ],
+ "duration_sec": "10",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc18_loopback",
+ "restart": "true"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-04-25 02:28:13",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:07.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "EXT",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn1ter",
+ "name": "net_nfvbench_vn1ter",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1",
+ "name": "net_nfvbench_vn1",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": "true",
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": true,
+ "request_id": "29ad1ab70db044069cca0a6862c8d563",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "11735907pps",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "64"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": false,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_64-fc_100k-rate_70%.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": true,
+ "no_arp": true,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "64"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2505,
+ 2505
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc18_loopback",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "flavor_nfvbench_dpdk",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_64-fc_100k-rate_70%.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "EXT": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "64": {
+ "run_config": {
+ "direction-forward": {
+ "rx": {
+ "rate_percent": 15.714376742399999,
+ "rate_pps": 5846122,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 3928594185
+ },
+ "tx": {
+ "rate_percent": 15.714376742399999,
+ "rate_pps": 5846122,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 3928594185
+ },
+ "orig": {
+ "rate_percent": 15.773059008,
+ "rate_pps": 5867953,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 3943264752
+ }
+ },
+ "direction-total": {
+ "rx": {
+ "rate_percent": 31.429699929599998,
+ "rate_pps": 11692596.0,
+ "rate_bps": 7857424981.0
+ },
+ "tx": {
+ "rate_percent": 31.429699929599998,
+ "rate_pps": 11692596.0,
+ "rate_bps": 7857424981.0
+ },
+ "orig": {
+ "rate_percent": 31.546118016,
+ "rate_pps": 11735906.0,
+ "rate_bps": 7886529504.0
+ }
+ },
+ "direction-reverse": {
+ "rx": {
+ "rate_percent": 15.715323187200001,
+ "rate_pps": 5846474,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 3928830796
+ },
+ "tx": {
+ "rate_percent": 15.715323187200001,
+ "rate_pps": 5846474,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 3928830796
+ },
+ "orig": {
+ "rate_percent": 15.773059008,
+ "rate_pps": 5867953,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 3943264752
+ }
+ }
+ },
+ "packet_path_stats": {
+ "Forward": {
+ "interfaces": [
+ "TRex.TX.p0",
+ "TRex.RX.p1"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 58410774,
+ "-59 (-0.0001%)"
+ ],
+ "lat_max_usec": 42,
+ "lat_avg_usec": 16,
+ "lat_min_usec": 5,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ },
+ "Reverse": {
+ "interfaces": [
+ "TRex.TX.p1",
+ "TRex.RX.p0"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 58464744,
+ 58464744
+ ],
+ "lat_max_usec": 42,
+ "lat_avg_usec": 15,
+ "lat_min_usec": 5,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ }
+ },
+ "stats": {
+ "total_tx_rate": 11692596,
+ "overall": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 3193174528.0,
+ "pkt_rate": 5869806.5,
+ "max_delay_usec": 42,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "avg_delay_usec": 15.50001505653573,
+ "total_pkt_bytes": 7950965756,
+ "total_pkts": 116925967,
+ "min_delay_usec": 5
+ },
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg=",
+ "tx": {
+ "total_pkt_bytes": 7950965756,
+ "total_pkts": 116925967,
+ "pkt_bit_rate": 3193170688.0,
+ "pkt_rate": 5869801.5
+ }
+ },
+ "1": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 3193216000,
+ "pkt_rate": 5869884,
+ "max_delay_usec": 42,
+ "total_pkt_bytes": 3975363164,
+ "avg_delay_usec": 15,
+ "total_pkts": 58461223,
+ "min_delay_usec": 5
+ },
+ "tx": {
+ "total_pkt_bytes": 3975602592,
+ "total_pkts": 58464744,
+ "pkt_bit_rate": 3193189888,
+ "pkt_rate": 5869842
+ }
+ },
+ "0": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 3193133056,
+ "pkt_rate": 5869729,
+ "max_delay_usec": 42,
+ "total_pkt_bytes": 3975602592,
+ "avg_delay_usec": 16,
+ "total_pkts": 58464744,
+ "min_delay_usec": 5
+ },
+ "tx": {
+ "total_pkt_bytes": 3975363164,
+ "total_pkts": 58461223,
+ "pkt_bit_rate": 3193151488,
+ "pkt_rate": 5869761
+ }
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 7857424512.0,
+ "theoretical_tx_rate_pps": 74404761.90476191
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "29ad1ab70db044069cca0a6862c8d563"
+ },
+ "synthesis": {
+ "avg_delay_usec": 15.50001505653573,
+ "total_tx_rate": 11692596
+ }
+ },
+ {
+ "input": {
+ "rate": "90%",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_64-fc_100k-rate_90%.json",
+ "frame_sizes": [
+ "64"
+ ],
+ "duration_sec": "10",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc18_loopback",
+ "restart": "true"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-04-25 02:28:50",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:07.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "EXT",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn1ter",
+ "name": "net_nfvbench_vn1ter",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1",
+ "name": "net_nfvbench_vn1",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": "true",
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": true,
+ "request_id": "1cc7ff91553043a19730fd45e9d5f126",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "15089023pps",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "64"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": false,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_64-fc_100k-rate_90%.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": true,
+ "no_arp": true,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "64"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2505,
+ 2505
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc18_loopback",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "flavor_nfvbench_dpdk",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_64-fc_100k-rate_90%.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "EXT": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "64": {
+ "run_config": {
+ "direction-forward": {
+ "rx": {
+ "rate_percent": 20.20257792,
+ "rate_pps": 7515840,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 5050644480
+ },
+ "tx": {
+ "rate_percent": 20.20257792,
+ "rate_pps": 7515840,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 5050644480
+ },
+ "orig": {
+ "rate_percent": 20.279646912,
+ "rate_pps": 7544511,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 5069911728
+ }
+ },
+ "direction-total": {
+ "rx": {
+ "rate_percent": 40.4063724288,
+ "rate_pps": 15032132.0,
+ "rate_bps": 10101593107.0
+ },
+ "tx": {
+ "rate_percent": 40.4063724288,
+ "rate_pps": 15032132.0,
+ "rate_bps": 10101593107.0
+ },
+ "orig": {
+ "rate_percent": 40.559293824,
+ "rate_pps": 15089022.0,
+ "rate_bps": 10139823456.0
+ }
+ },
+ "direction-reverse": {
+ "rx": {
+ "rate_percent": 20.203794508799998,
+ "rate_pps": 7516292,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 5050948627
+ },
+ "tx": {
+ "rate_percent": 20.203794508799998,
+ "rate_pps": 7516292,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 5050948627
+ },
+ "orig": {
+ "rate_percent": 20.279646912,
+ "rate_pps": 7544511,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 5069911728
+ }
+ }
+ },
+ "packet_path_stats": {
+ "Forward": {
+ "interfaces": [
+ "TRex.TX.p0",
+ "TRex.RX.p1"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 75091840,
+ "-79 (-0.0001%)"
+ ],
+ "lat_max_usec": 41,
+ "lat_avg_usec": 18,
+ "lat_min_usec": 5,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ },
+ "Reverse": {
+ "interfaces": [
+ "TRex.TX.p1",
+ "TRex.RX.p0"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 75162926,
+ 75162926
+ ],
+ "lat_max_usec": 40,
+ "lat_avg_usec": 16,
+ "lat_min_usec": 5,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ }
+ },
+ "stats": {
+ "total_tx_rate": 15032132,
+ "overall": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 4096779776.0,
+ "pkt_rate": 7530844.5,
+ "max_delay_usec": 41,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "avg_delay_usec": 17.00003010883499,
+ "total_pkt_bytes": 10221850168,
+ "total_pkts": 150321326,
+ "min_delay_usec": 5
+ },
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg=",
+ "tx": {
+ "total_pkt_bytes": 10221850168,
+ "total_pkts": 150321326,
+ "pkt_bit_rate": 4096779520.0,
+ "pkt_rate": 7530849.0
+ }
+ },
+ "1": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 4096839424,
+ "pkt_rate": 7530954,
+ "max_delay_usec": 40,
+ "total_pkt_bytes": 5110771200,
+ "avg_delay_usec": 16,
+ "total_pkts": 75158400,
+ "min_delay_usec": 5
+ },
+ "tx": {
+ "total_pkt_bytes": 5111078968,
+ "total_pkts": 75162926,
+ "pkt_bit_rate": 4096763136,
+ "pkt_rate": 7530821
+ }
+ },
+ "0": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 4096720128,
+ "pkt_rate": 7530735,
+ "max_delay_usec": 41,
+ "total_pkt_bytes": 5111078968,
+ "avg_delay_usec": 18,
+ "total_pkts": 75162926,
+ "min_delay_usec": 5
+ },
+ "tx": {
+ "total_pkt_bytes": 5110771200,
+ "total_pkts": 75158400,
+ "pkt_bit_rate": 4096795904,
+ "pkt_rate": 7530877
+ }
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 10101592704.0,
+ "theoretical_tx_rate_pps": 74404761.90476191
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "1cc7ff91553043a19730fd45e9d5f126"
+ },
+ "synthesis": {
+ "avg_delay_usec": 17.00003010883499,
+ "total_tx_rate": 15032132
+ }
+ },
+ {
+ "input": {
+ "rate": "70%",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_768-fc_100k-rate_70%.json",
+ "frame_sizes": [
+ "768"
+ ],
+ "duration_sec": "10",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc18_loopback",
+ "restart": "true"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-04-25 02:29:26",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:07.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "EXT",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn1ter",
+ "name": "net_nfvbench_vn1ter",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1",
+ "name": "net_nfvbench_vn1",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": "true",
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": true,
+ "request_id": "83c6271d2c784b99971cb644e7b35976",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "5275399pps",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "768"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": false,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_768-fc_100k-rate_70%.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": true,
+ "no_arp": true,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "768"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2505,
+ 2505
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc18_loopback",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "flavor_nfvbench_dpdk",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_768-fc_100k-rate_70%.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "EXT": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "768": {
+ "run_config": {
+ "direction-forward": {
+ "rx": {
+ "rate_percent": 66.2607564672,
+ "rate_pps": 2627726,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 16565189116
+ },
+ "tx": {
+ "rate_percent": 66.2607564672,
+ "rate_pps": 2627726,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 16565189116
+ },
+ "orig": {
+ "rate_percent": 66.512230592,
+ "rate_pps": 2637699,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 16628057648
+ }
+ },
+ "direction-total": {
+ "rx": {
+ "rate_percent": 132.52550210559997,
+ "rate_pps": 5255610.0,
+ "rate_bps": 33131375525.0
+ },
+ "tx": {
+ "rate_percent": 132.52550210559997,
+ "rate_pps": 5255610.0,
+ "rate_bps": 33131375525.0
+ },
+ "orig": {
+ "rate_percent": 133.024461184,
+ "rate_pps": 5275398.0,
+ "rate_bps": 33256115296.0
+ }
+ },
+ "direction-reverse": {
+ "rx": {
+ "rate_percent": 66.26474563839999,
+ "rate_pps": 2627884,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 16566186409
+ },
+ "tx": {
+ "rate_percent": 66.26474563839999,
+ "rate_pps": 2627884,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 16566186409
+ },
+ "orig": {
+ "rate_percent": 66.512230592,
+ "rate_pps": 2637699,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 16628057648
+ }
+ }
+ },
+ "packet_path_stats": {
+ "Forward": {
+ "interfaces": [
+ "TRex.TX.p0",
+ "TRex.RX.p1"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 26254197,
+ "+5 (+0.0000%)"
+ ],
+ "lat_max_usec": 52,
+ "lat_avg_usec": 27,
+ "lat_min_usec": 6,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ },
+ "Reverse": {
+ "interfaces": [
+ "TRex.TX.p1",
+ "TRex.RX.p0"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 26278849,
+ 26278849
+ ],
+ "lat_max_usec": 64,
+ "lat_avg_usec": 27,
+ "lat_min_usec": 8,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ }
+ },
+ "stats": {
+ "total_tx_rate": 5255611,
+ "overall": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 16250518528.0,
+ "pkt_rate": 2631236.0,
+ "max_delay_usec": 64,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "avg_delay_usec": 27.0,
+ "total_pkt_bytes": 40573321552,
+ "total_pkts": 52556116,
+ "min_delay_usec": 6
+ },
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg=",
+ "tx": {
+ "total_pkt_bytes": 40573321552,
+ "total_pkts": 52556116,
+ "pkt_bit_rate": 16250488832.0,
+ "pkt_rate": 2631232.0
+ }
+ },
+ "1": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 16250605568,
+ "pkt_rate": 2631250,
+ "max_delay_usec": 64,
+ "total_pkt_bytes": 20286050124,
+ "avg_delay_usec": 27,
+ "total_pkts": 26277267,
+ "min_delay_usec": 8
+ },
+ "tx": {
+ "total_pkt_bytes": 20287271428,
+ "total_pkts": 26278849,
+ "pkt_bit_rate": 16250417152,
+ "pkt_rate": 2631220
+ }
+ },
+ "0": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 16250431488,
+ "pkt_rate": 2631222,
+ "max_delay_usec": 52,
+ "total_pkt_bytes": 20287271428,
+ "avg_delay_usec": 27,
+ "total_pkts": 26278849,
+ "min_delay_usec": 6
+ },
+ "tx": {
+ "total_pkt_bytes": 20286050124,
+ "total_pkts": 26277267,
+ "pkt_bit_rate": 16250560512,
+ "pkt_rate": 2631244
+ }
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 33131371744.0,
+ "theoretical_tx_rate_pps": 7931472.081218274
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "83c6271d2c784b99971cb644e7b35976"
+ },
+ "synthesis": {
+ "avg_delay_usec": 27.0,
+ "total_tx_rate": 5255611
+ }
+ },
+ {
+ "input": {
+ "rate": "90%",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_768-fc_100k-rate_90%.json",
+ "frame_sizes": [
+ "768"
+ ],
+ "duration_sec": "10",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc18_loopback",
+ "restart": "true"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-04-25 02:30:02",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:07.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "EXT",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn1ter",
+ "name": "net_nfvbench_vn1ter",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1",
+ "name": "net_nfvbench_vn1",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": "true",
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": true,
+ "request_id": "2455d986fcbe4f858b57eb97a3d6cf28",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "6782656pps",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "768"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": false,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_768-fc_100k-rate_90%.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": true,
+ "no_arp": true,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "768"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2505,
+ 2505
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc18_loopback",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "flavor_nfvbench_dpdk",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_768-fc_100k-rate_90%.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "EXT": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "768": {
+ "run_config": {
+ "direction-forward": {
+ "rx": {
+ "rate_percent": 85.19754631679999,
+ "rate_pps": 3378709,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 21299386579
+ },
+ "tx": {
+ "rate_percent": 85.19754631679999,
+ "rate_pps": 3378709,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 21299386579
+ },
+ "orig": {
+ "rate_percent": 85.515726848,
+ "rate_pps": 3391328,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 21378931712
+ }
+ },
+ "direction-total": {
+ "rx": {
+ "rate_percent": 170.40022661119997,
+ "rate_pps": 6757622.0,
+ "rate_bps": 42600056652.0
+ },
+ "tx": {
+ "rate_percent": 170.40022661119997,
+ "rate_pps": 6757622.0,
+ "rate_bps": 42600056652.0
+ },
+ "orig": {
+ "rate_percent": 171.031453696,
+ "rate_pps": 6782656.0,
+ "rate_bps": 42757863424.0
+ }
+ },
+ "direction-reverse": {
+ "rx": {
+ "rate_percent": 85.2026802944,
+ "rate_pps": 3378913,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 21300670073
+ },
+ "tx": {
+ "rate_percent": 85.2026802944,
+ "rate_pps": 3378913,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 21300670073
+ },
+ "orig": {
+ "rate_percent": 85.515726848,
+ "rate_pps": 3391328,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 21378931712
+ }
+ }
+ },
+ "packet_path_stats": {
+ "Forward": {
+ "interfaces": [
+ "TRex.TX.p0",
+ "TRex.RX.p1"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 33757754,
+ "-3 (-0.0000%)"
+ ],
+ "lat_max_usec": 63,
+ "lat_avg_usec": 46,
+ "lat_min_usec": 17,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ },
+ "Reverse": {
+ "interfaces": [
+ "TRex.TX.p1",
+ "TRex.RX.p0"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 33789134,
+ 33789134
+ ],
+ "lat_max_usec": 72,
+ "lat_avg_usec": 48,
+ "lat_min_usec": 21,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ }
+ },
+ "stats": {
+ "total_tx_rate": 6757623,
+ "overall": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 20899780608.0,
+ "pkt_rate": 3384031.5,
+ "max_delay_usec": 72,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "avg_delay_usec": 46.99996987106354,
+ "total_pkt_bytes": 52168851104,
+ "total_pkts": 67576232,
+ "min_delay_usec": 17
+ },
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg=",
+ "tx": {
+ "total_pkt_bytes": 52168851104,
+ "total_pkts": 67576232,
+ "pkt_bit_rate": 20899762176.0,
+ "pkt_rate": 3384028.0
+ }
+ },
+ "1": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 20900167680,
+ "pkt_rate": 3384094,
+ "max_delay_usec": 72,
+ "total_pkt_bytes": 26083639656,
+ "avg_delay_usec": 48,
+ "total_pkts": 33787098,
+ "min_delay_usec": 21
+ },
+ "tx": {
+ "total_pkt_bytes": 26085211448,
+ "total_pkts": 33789134,
+ "pkt_bit_rate": 20899940352,
+ "pkt_rate": 3384056
+ }
+ },
+ "0": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 20899393536,
+ "pkt_rate": 3383969,
+ "max_delay_usec": 63,
+ "total_pkt_bytes": 26085211448,
+ "avg_delay_usec": 46,
+ "total_pkts": 33789134,
+ "min_delay_usec": 17
+ },
+ "tx": {
+ "total_pkt_bytes": 26083639656,
+ "total_pkts": 33787098,
+ "pkt_bit_rate": 20899584000,
+ "pkt_rate": 3384000
+ }
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 42600055392.0,
+ "theoretical_tx_rate_pps": 7931472.081218274
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "2455d986fcbe4f858b57eb97a3d6cf28"
+ },
+ "synthesis": {
+ "avg_delay_usec": 46.99996987106354,
+ "total_tx_rate": 6757623
+ }
+ },
+ {
+ "input": {
+ "rate": "70%",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_1518-fc_100k-rate_70%.json",
+ "frame_sizes": [
+ "1518"
+ ],
+ "duration_sec": "10",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc18_loopback",
+ "restart": "true"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-04-25 02:30:39",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:07.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "EXT",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn1ter",
+ "name": "net_nfvbench_vn1ter",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1",
+ "name": "net_nfvbench_vn1",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": "true",
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": true,
+ "request_id": "5c5843684c864e02b3be78bf0c27b4f4",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "2713913pps",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "1518"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": false,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_1518-fc_100k-rate_70%.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": true,
+ "no_arp": true,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "1518"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2505,
+ 2505
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc18_loopback",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "flavor_nfvbench_dpdk",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_1518-fc_100k-rate_70%.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "EXT": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "1518": {
+ "run_config": {
+ "direction-forward": {
+ "rx": {
+ "rate_percent": 66.53541553919999,
+ "rate_pps": 1351906,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 16633853884
+ },
+ "tx": {
+ "rate_percent": 66.53541553919999,
+ "rate_pps": 1351906,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 16633853884
+ },
+ "orig": {
+ "rate_percent": 66.78397110399999,
+ "rate_pps": 1356956,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 16695992776
+ }
+ },
+ "direction-total": {
+ "rx": {
+ "rate_percent": 133.07484710399999,
+ "rate_pps": 2703893.0,
+ "rate_bps": 33268711775.0
+ },
+ "tx": {
+ "rate_percent": 133.07484710399999,
+ "rate_pps": 2703893.0,
+ "rate_bps": 33268711775.0
+ },
+ "orig": {
+ "rate_percent": 133.56794220799998,
+ "rate_pps": 2713912.0,
+ "rate_bps": 33391985552.0
+ }
+ },
+ "direction-reverse": {
+ "rx": {
+ "rate_percent": 66.5394315648,
+ "rate_pps": 1351987,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 16634857891
+ },
+ "tx": {
+ "rate_percent": 66.5394315648,
+ "rate_pps": 1351987,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 16634857891
+ },
+ "orig": {
+ "rate_percent": 66.78397110399999,
+ "rate_pps": 1356956,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 16695992776
+ }
+ }
+ },
+ "packet_path_stats": {
+ "Forward": {
+ "interfaces": [
+ "TRex.TX.p0",
+ "TRex.RX.p1"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 13507087,
+ "+37 (+0.0003%)"
+ ],
+ "lat_max_usec": 76,
+ "lat_avg_usec": 33,
+ "lat_min_usec": 7,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ },
+ "Reverse": {
+ "interfaces": [
+ "TRex.TX.p1",
+ "TRex.RX.p0"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 13519878,
+ 13519878
+ ],
+ "lat_max_usec": 104,
+ "lat_avg_usec": 46,
+ "lat_min_usec": 7,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ }
+ },
+ "stats": {
+ "total_tx_rate": 2703894,
+ "overall": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 16510260736.0,
+ "pkt_rate": 1355967.5,
+ "max_delay_usec": 104,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "avg_delay_usec": 39.49980383846408,
+ "total_pkt_bytes": 41153266680,
+ "total_pkts": 27038940,
+ "min_delay_usec": 7
+ },
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg=",
+ "tx": {
+ "total_pkt_bytes": 41153266680,
+ "total_pkts": 27038940,
+ "pkt_bit_rate": 16510253568.0,
+ "pkt_rate": 1355967.5
+ }
+ },
+ "1": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 16510286848,
+ "pkt_rate": 1355970,
+ "max_delay_usec": 104,
+ "total_pkt_bytes": 20576012364,
+ "avg_delay_usec": 46,
+ "total_pkts": 13519062,
+ "min_delay_usec": 7
+ },
+ "tx": {
+ "total_pkt_bytes": 20577254316,
+ "total_pkts": 13519878,
+ "pkt_bit_rate": 16510161920,
+ "pkt_rate": 1355960
+ }
+ },
+ "0": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 16510234624,
+ "pkt_rate": 1355965,
+ "max_delay_usec": 76,
+ "total_pkt_bytes": 20577254316,
+ "avg_delay_usec": 33,
+ "total_pkts": 13519878,
+ "min_delay_usec": 7
+ },
+ "tx": {
+ "total_pkt_bytes": 20576012364,
+ "total_pkts": 13519062,
+ "pkt_bit_rate": 16510345216,
+ "pkt_rate": 1355975
+ }
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 33268711776.0,
+ "theoretical_tx_rate_pps": 4063719.1157347206
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "5c5843684c864e02b3be78bf0c27b4f4"
+ },
+ "synthesis": {
+ "avg_delay_usec": 39.49980383846408,
+ "total_tx_rate": 2703894
+ }
+ },
+ {
+ "input": {
+ "rate": "90%",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_1518-fc_100k-rate_90%.json",
+ "frame_sizes": [
+ "1518"
+ ],
+ "duration_sec": "10",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc18_loopback",
+ "restart": "true"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-04-25 02:31:15",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:07.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "EXT",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn1ter",
+ "name": "net_nfvbench_vn1ter",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1",
+ "name": "net_nfvbench_vn1",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": "true",
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": true,
+ "request_id": "2494d2b787c4476c90474945540b4645",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "3489317pps",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "1518"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": false,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_1518-fc_100k-rate_90%.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": true,
+ "no_arp": true,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "1518"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2505,
+ 2505
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc18_loopback",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "flavor_nfvbench_dpdk",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_1518-fc_100k-rate_90%.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "EXT": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "1518": {
+ "run_config": {
+ "direction-forward": {
+ "rx": {
+ "rate_percent": 85.545577856,
+ "rate_pps": 1738166,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 21386394464
+ },
+ "tx": {
+ "rate_percent": 85.545577856,
+ "rate_pps": 1738166,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 21386394464
+ },
+ "orig": {
+ "rate_percent": 85.865112736,
+ "rate_pps": 1744658,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 21466278184
+ }
+ },
+ "direction-total": {
+ "rx": {
+ "rate_percent": 171.0963135488,
+ "rate_pps": 3476436.0,
+ "rate_bps": 42774078387.0
+ },
+ "tx": {
+ "rate_percent": 171.0963135488,
+ "rate_pps": 3476436.0,
+ "rate_bps": 42774078387.0
+ },
+ "orig": {
+ "rate_percent": 171.730225472,
+ "rate_pps": 3489316.0,
+ "rate_bps": 42932556368.0
+ }
+ },
+ "direction-reverse": {
+ "rx": {
+ "rate_percent": 85.5507356928,
+ "rate_pps": 1738270,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 21387683923
+ },
+ "tx": {
+ "rate_percent": 85.5507356928,
+ "rate_pps": 1738270,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 21387683923
+ },
+ "orig": {
+ "rate_percent": 85.865112736,
+ "rate_pps": 1744658,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 21466278184
+ }
+ }
+ },
+ "packet_path_stats": {
+ "Forward": {
+ "interfaces": [
+ "TRex.TX.p0",
+ "TRex.RX.p1"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 17366577,
+ "+5 (+0.0000%)"
+ ],
+ "lat_max_usec": 84,
+ "lat_avg_usec": 34,
+ "lat_min_usec": 7,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ },
+ "Reverse": {
+ "interfaces": [
+ "TRex.TX.p1",
+ "TRex.RX.p0"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 17382708,
+ 17382708
+ ],
+ "lat_max_usec": 96,
+ "lat_avg_usec": 49,
+ "lat_min_usec": 8,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ }
+ },
+ "stats": {
+ "total_tx_rate": 3476436,
+ "overall": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 21135840256.0,
+ "pkt_rate": 1735860.5,
+ "max_delay_usec": 96,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "avg_delay_usec": 41.49977390643201,
+ "total_pkt_bytes": 52911368096,
+ "total_pkts": 34764368,
+ "min_delay_usec": 7
+ },
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg=",
+ "tx": {
+ "total_pkt_bytes": 52911368096,
+ "total_pkts": 34764368,
+ "pkt_bit_rate": 21135740928.0,
+ "pkt_rate": 1735852.0
+ }
+ },
+ "1": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 21135886336,
+ "pkt_rate": 1735864,
+ "max_delay_usec": 96,
+ "total_pkt_bytes": 26454886520,
+ "avg_delay_usec": 49,
+ "total_pkts": 17381660,
+ "min_delay_usec": 8
+ },
+ "tx": {
+ "total_pkt_bytes": 26456481576,
+ "total_pkts": 17382708,
+ "pkt_bit_rate": 21135585280,
+ "pkt_rate": 1735839
+ }
+ },
+ "0": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 21135794176,
+ "pkt_rate": 1735857,
+ "max_delay_usec": 84,
+ "total_pkt_bytes": 26456481576,
+ "avg_delay_usec": 34,
+ "total_pkts": 17382708,
+ "min_delay_usec": 7
+ },
+ "tx": {
+ "total_pkt_bytes": 26454886520,
+ "total_pkts": 17381660,
+ "pkt_bit_rate": 21135896576,
+ "pkt_rate": 1735865
+ }
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 42774068544.0,
+ "theoretical_tx_rate_pps": 4063719.1157347206
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "2494d2b787c4476c90474945540b4645"
+ },
+ "synthesis": {
+ "avg_delay_usec": 41.49977390643201,
+ "total_tx_rate": 3476436
+ }
+ },
+ {
+ "input": {
+ "rate": "70%",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_9000-fc_100k-rate_70%.json",
+ "frame_sizes": [
+ "9000"
+ ],
+ "duration_sec": "10",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc18_loopback",
+ "restart": "true"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-04-25 02:31:51",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:07.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "EXT",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn1ter",
+ "name": "net_nfvbench_vn1ter",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1",
+ "name": "net_nfvbench_vn1",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": "true",
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": true,
+ "request_id": "7c104183aa154d46944772ed88ae04c3",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "462795pps",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "9000"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": false,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_9000-fc_100k-rate_70%.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": true,
+ "no_arp": true,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "9000"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2505,
+ 2505
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc18_loopback",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "flavor_nfvbench_dpdk",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_9000-fc_100k-rate_70%.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "EXT": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "9000": {
+ "run_config": {
+ "direction-forward": {
+ "rx": {
+ "rate_percent": 66.538736,
+ "rate_pps": 230525,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 16634684000
+ },
+ "tx": {
+ "rate_percent": 66.538736,
+ "rate_pps": 230525,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 16634684000
+ },
+ "orig": {
+ "rate_percent": 66.7905744,
+ "rate_pps": 231397,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 16697643600
+ }
+ },
+ "direction-total": {
+ "rx": {
+ "rate_percent": 133.08151296,
+ "rate_pps": 461064.0,
+ "rate_bps": 33270378240.0
+ },
+ "tx": {
+ "rate_percent": 133.08151296,
+ "rate_pps": 461064.0,
+ "rate_bps": 33270378240.0
+ },
+ "orig": {
+ "rate_percent": 133.5811488,
+ "rate_pps": 462794.0,
+ "rate_bps": 33395287200.0
+ }
+ },
+ "direction-reverse": {
+ "rx": {
+ "rate_percent": 66.54277696000001,
+ "rate_pps": 230539,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 16635694240
+ },
+ "tx": {
+ "rate_percent": 66.54277696000001,
+ "rate_pps": 230539,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 16635694240
+ },
+ "orig": {
+ "rate_percent": 66.7905744,
+ "rate_pps": 231397,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 16697643600
+ }
+ }
+ },
+ "packet_path_stats": {
+ "Forward": {
+ "interfaces": [
+ "TRex.TX.p0",
+ "TRex.RX.p1"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 2303254,
+ "+55 (+0.0024%)"
+ ],
+ "lat_max_usec": 149,
+ "lat_avg_usec": 70,
+ "lat_min_usec": 14,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ },
+ "Reverse": {
+ "interfaces": [
+ "TRex.TX.p1",
+ "TRex.RX.p0"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 2305390,
+ 2305390
+ ],
+ "lat_max_usec": 195,
+ "lat_avg_usec": 73,
+ "lat_min_usec": 14,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ }
+ },
+ "stats": {
+ "total_tx_rate": 461064,
+ "overall": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 16609682432.0,
+ "pkt_rate": 230587.0,
+ "max_delay_usec": 195,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "avg_delay_usec": 71.49995445317786,
+ "total_pkt_bytes": 41514202560,
+ "total_pkts": 4610640,
+ "min_delay_usec": 14
+ },
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg=",
+ "tx": {
+ "total_pkt_bytes": 41514202560,
+ "total_pkts": 4610640,
+ "pkt_bit_rate": 16609573376.0,
+ "pkt_rate": 230585.5
+ }
+ },
+ "1": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 16609541120,
+ "pkt_rate": 230585,
+ "max_delay_usec": 195,
+ "total_pkt_bytes": 20756471000,
+ "avg_delay_usec": 73,
+ "total_pkts": 2305250,
+ "min_delay_usec": 14
+ },
+ "tx": {
+ "total_pkt_bytes": 20757731560,
+ "total_pkts": 2305390,
+ "pkt_bit_rate": 16609261568,
+ "pkt_rate": 230581
+ }
+ },
+ "0": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 16609823744,
+ "pkt_rate": 230589,
+ "max_delay_usec": 149,
+ "total_pkt_bytes": 20757731560,
+ "avg_delay_usec": 70,
+ "total_pkts": 2305390,
+ "min_delay_usec": 14
+ },
+ "tx": {
+ "total_pkt_bytes": 20756471000,
+ "total_pkts": 2305250,
+ "pkt_bit_rate": 16609885184,
+ "pkt_rate": 230590
+ }
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 33270378240.0,
+ "theoretical_tx_rate_pps": 692904.6563192905
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "7c104183aa154d46944772ed88ae04c3"
+ },
+ "synthesis": {
+ "avg_delay_usec": 71.49995445317786,
+ "total_tx_rate": 461064
+ }
+ },
+ {
+ "input": {
+ "rate": "90%",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_9000-fc_100k-rate_90%.json",
+ "frame_sizes": [
+ "9000"
+ ],
+ "duration_sec": "10",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc18_loopback",
+ "restart": "true"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-04-25 02:32:27",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:07.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "EXT",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn1ter",
+ "name": "net_nfvbench_vn1ter",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1",
+ "name": "net_nfvbench_vn1",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": "true",
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": true,
+ "request_id": "539e9bb7f81444c6a2856b249554d42a",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "595022pps",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "9000"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": false,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_9000-fc_100k-rate_90%.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": true,
+ "no_arp": true,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "9000"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2505,
+ 2505
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc18_loopback",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "flavor_nfvbench_dpdk",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_9000-fc_100k-rate_90%.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "EXT": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "9000": {
+ "run_config": {
+ "direction-forward": {
+ "rx": {
+ "rate_percent": 85.548248896,
+ "rate_pps": 296383,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 21387062224
+ },
+ "tx": {
+ "rate_percent": 85.548248896,
+ "rate_pps": 296383,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 21387062224
+ },
+ "orig": {
+ "rate_percent": 85.87357504,
+ "rate_pps": 297511,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 21468393760
+ }
+ },
+ "direction-total": {
+ "rx": {
+ "rate_percent": 171.101722176,
+ "rate_pps": 592785.0,
+ "rate_bps": 42775430544.0
+ },
+ "tx": {
+ "rate_percent": 171.101722176,
+ "rate_pps": 592785.0,
+ "rate_bps": 42775430544.0
+ },
+ "orig": {
+ "rate_percent": 171.74715008,
+ "rate_pps": 595022.0,
+ "rate_bps": 42936787520.0
+ }
+ },
+ "direction-reverse": {
+ "rx": {
+ "rate_percent": 85.55347328,
+ "rate_pps": 296402,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 21388368320
+ },
+ "tx": {
+ "rate_percent": 85.55347328,
+ "rate_pps": 296402,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 21388368320
+ },
+ "orig": {
+ "rate_percent": 85.87357504,
+ "rate_pps": 297511,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 21468393760
+ }
+ }
+ },
+ "packet_path_stats": {
+ "Forward": {
+ "interfaces": [
+ "TRex.TX.p0",
+ "TRex.RX.p1"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 2961244,
+ "+41 (+0.0014%)"
+ ],
+ "lat_max_usec": 422,
+ "lat_avg_usec": 224,
+ "lat_min_usec": 29,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ },
+ "Reverse": {
+ "interfaces": [
+ "TRex.TX.p1",
+ "TRex.RX.p0"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 2964020,
+ 2964020
+ ],
+ "lat_max_usec": 392,
+ "lat_avg_usec": 176,
+ "lat_min_usec": 16,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ }
+ },
+ "stats": {
+ "total_tx_rate": 592785,
+ "overall": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 21366905856.0,
+ "pkt_rate": 296630.0,
+ "max_delay_usec": 422,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "avg_delay_usec": 200.00073281095248,
+ "total_pkt_bytes": 53374442436,
+ "total_pkts": 5927859,
+ "min_delay_usec": 16
+ },
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg=",
+ "tx": {
+ "total_pkt_bytes": 53374442436,
+ "total_pkts": 5927859,
+ "pkt_bit_rate": 21366993920.0,
+ "pkt_rate": 296631.0
+ }
+ },
+ "1": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 21367107584,
+ "pkt_rate": 296633,
+ "max_delay_usec": 392,
+ "total_pkt_bytes": 26686406356,
+ "avg_delay_usec": 176,
+ "total_pkts": 2963839,
+ "min_delay_usec": 16
+ },
+ "tx": {
+ "total_pkt_bytes": 26688036080,
+ "total_pkts": 2964020,
+ "pkt_bit_rate": 21367209984,
+ "pkt_rate": 296634
+ }
+ },
+ "0": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 21366704128,
+ "pkt_rate": 296627,
+ "max_delay_usec": 422,
+ "total_pkt_bytes": 26688036080,
+ "avg_delay_usec": 224,
+ "total_pkts": 2964020,
+ "min_delay_usec": 29
+ },
+ "tx": {
+ "total_pkt_bytes": 26686406356,
+ "total_pkts": 2963839,
+ "pkt_bit_rate": 21366777856,
+ "pkt_rate": 296628
+ }
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 42775365600.0,
+ "theoretical_tx_rate_pps": 692904.6563192905
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "539e9bb7f81444c6a2856b249554d42a"
+ },
+ "synthesis": {
+ "avg_delay_usec": 200.00073281095248,
+ "total_tx_rate": 592785
+ }
+ }
+ ],
+ "throughput": [
+ {
+ "input": {
+ "rate": "ndr",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_64-fc_128-rate_ndr-2.json",
+ "frame_sizes": [
+ "64"
+ ],
+ "duration_sec": "10",
+ "flow_count": "128",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc18_loopback"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-04-25 00:14:08",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:07.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "EXT",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn1ter",
+ "name": "net_nfvbench_vn1ter",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1",
+ "name": "net_nfvbench_vn1",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": true,
+ "request_id": "d35b641ccf884fd6a0c371913594ab90",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "64"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 128,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_64-fc_128-rate_ndr-1.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": true,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "64"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2505,
+ 2505
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc18_loopback",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "flavor_nfvbench_dpdk",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_64-fc_128-rate_ndr-1.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "EXT": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "warning": "WARNING: There is a significant difference between requested TX rate (74404760) and actual TX rate (16701232). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "64": {
+ "ndr": {
+ "load_percent_per_direction": 100.0,
+ "timestamp_sec": 1650845663.429861,
+ "stats": {
+ "total_tx_rate": 16701232,
+ "overall": {
+ "rx_pkts": 167012327,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 97,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 167012327,
+ "avg_delay_usec": 35.48017790327537,
+ "min_delay_usec": 6,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 83760820,
+ "min_delay_usec": 6,
+ "drop_pct": 0,
+ "max_delay_usec": 97,
+ "tx_pkts": 83251507,
+ "avg_delay_usec": 29,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 83251507,
+ "min_delay_usec": 6,
+ "drop_pct": 0,
+ "max_delay_usec": 92,
+ "tx_pkts": 83760820,
+ "avg_delay_usec": 42,
+ "drop_percentage": 0.0
+ },
+ "warning": "WARNING: There is a significant difference between requested TX rate (74404760) and actual TX rate (16701232). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 11223227904.0,
+ "theoretical_tx_rate_pps": 74404761.90476191
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 200.0,
+ "duration_sec": 10.0,
+ "l2frame_size": "64",
+ "rate_pps": 74404760,
+ "rate_bps": 50000000000.0,
+ "time_taken_sec": 12.489534616470337
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 74404760.0,
+ "rx_pkts": 167012327,
+ "time_ms": 1650845663429,
+ "drop_pct": 0,
+ "total_tx_pps": 16701232,
+ "tx_pps": 74404760,
+ "tx_pkts": 167012327,
+ "ndr_pps": 37202380,
+ "warning": "WARNING: There is a significant difference between requested TX rate (74404760) and actual TX rate (16701232). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "drop_percentage": 0.0
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 128,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "d35b641ccf884fd6a0c371913594ab90"
+ },
+ "synthesis": {
+ "avg_delay_usec": 35.48017790327537,
+ "total_tx_rate": 16701232
+ }
+ },
+ {
+ "input": {
+ "rate": "ndr",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_128-fc_128-rate_ndr-2.json",
+ "frame_sizes": [
+ "128"
+ ],
+ "duration_sec": "10",
+ "flow_count": "128",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc18_loopback"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-04-25 00:14:40",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:07.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "EXT",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn1ter",
+ "name": "net_nfvbench_vn1ter",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1",
+ "name": "net_nfvbench_vn1",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": true,
+ "request_id": "7f8f5bba535643418ac4efa4d3f94823",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "128"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 128,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_128-fc_128-rate_ndr-0.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": true,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "128"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2505,
+ 2505
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc18_loopback",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "flavor_nfvbench_dpdk",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_128-fc_128-rate_ndr-0.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "EXT": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "128": {
+ "ndr": {
+ "load_percent_per_direction": 100.0,
+ "timestamp_sec": 1650845695.5087018,
+ "stats": {
+ "total_tx_rate": 18016784,
+ "overall": {
+ "rx_pkts": 180167849,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 63,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 180167849,
+ "avg_delay_usec": 18.991852847174748,
+ "min_delay_usec": 5,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 90328567,
+ "min_delay_usec": 6,
+ "drop_pct": 0,
+ "max_delay_usec": 63,
+ "tx_pkts": 89839282,
+ "avg_delay_usec": 16,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 89839282,
+ "min_delay_usec": 5,
+ "drop_pct": 0,
+ "max_delay_usec": 55,
+ "tx_pkts": 90328567,
+ "avg_delay_usec": 22,
+ "drop_percentage": 0.0
+ },
+ "warning": "WARNING: There is a significant difference between requested TX rate (42229728) and actual TX rate (18016784). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 21331872256.0,
+ "theoretical_tx_rate_pps": 42229729.72972973
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 200.0,
+ "duration_sec": 10.0,
+ "l2frame_size": "128",
+ "rate_pps": 42229728,
+ "rate_bps": 50000000000.0,
+ "time_taken_sec": 12.489280939102173
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 42229728.0,
+ "rx_pkts": 180167849,
+ "time_ms": 1650845695508,
+ "drop_pct": 0,
+ "total_tx_pps": 18016784,
+ "tx_pps": 42229728,
+ "tx_pkts": 180167849,
+ "ndr_pps": 21114864,
+ "warning": "WARNING: There is a significant difference between requested TX rate (42229728) and actual TX rate (18016784). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "drop_percentage": 0.0
+ }
+ ]
+ }
+ },
+ "warning": "WARNING: There is a significant difference between requested TX rate (42229728) and actual TX rate (18016784). The traffic generator may not have sufficient CPU to achieve the requested TX rate."
+ },
+ "flow_count": 128,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "7f8f5bba535643418ac4efa4d3f94823"
+ },
+ "synthesis": {
+ "avg_delay_usec": 18.991852847174748,
+ "total_tx_rate": 18016784
+ }
+ },
+ {
+ "input": {
+ "rate": "ndr",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_256-fc_128-rate_ndr-2.json",
+ "frame_sizes": [
+ "256"
+ ],
+ "duration_sec": "10",
+ "flow_count": "128",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc18_loopback"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-04-25 00:15:44",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:07.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "EXT",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn1ter",
+ "name": "net_nfvbench_vn1ter",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1",
+ "name": "net_nfvbench_vn1",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": true,
+ "request_id": "d0df1174e1c64fbb9b686a68ccc7e668",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "256"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 128,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_256-fc_128-rate_ndr-1.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": true,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "256"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2505,
+ 2505
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc18_loopback",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "flavor_nfvbench_dpdk",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_256-fc_128-rate_ndr-1.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "EXT": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "warning": "WARNING: There is a significant difference between requested TX rate (22644926) and actual TX rate (15754775). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "256": {
+ "ndr": {
+ "load_percent_per_direction": 100.0,
+ "timestamp_sec": 1650845759.8291821,
+ "stats": {
+ "total_tx_rate": 15754775,
+ "overall": {
+ "rx_pkts": 157547756,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 72,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 157547756,
+ "avg_delay_usec": 28.504292190616795,
+ "min_delay_usec": 7,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 78909123,
+ "min_delay_usec": 7,
+ "drop_pct": 0,
+ "max_delay_usec": 72,
+ "tx_pkts": 78638633,
+ "avg_delay_usec": 31,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 78638633,
+ "min_delay_usec": 8,
+ "drop_pct": 0,
+ "max_delay_usec": 48,
+ "tx_pkts": 78909123,
+ "avg_delay_usec": 26,
+ "drop_percentage": 0.0
+ },
+ "warning": "WARNING: There is a significant difference between requested TX rate (22644926) and actual TX rate (15754775). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 34786543200.0,
+ "theoretical_tx_rate_pps": 22644927.536231883
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 200.0,
+ "duration_sec": 10.0,
+ "l2frame_size": "256",
+ "rate_pps": 22644926,
+ "rate_bps": 50000000000.0,
+ "time_taken_sec": 12.5189950466156
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 22644926.0,
+ "rx_pkts": 157547756,
+ "time_ms": 1650845759828,
+ "drop_pct": 0,
+ "total_tx_pps": 15754775,
+ "tx_pps": 22644926,
+ "tx_pkts": 157547756,
+ "ndr_pps": 11322463,
+ "warning": "WARNING: There is a significant difference between requested TX rate (22644926) and actual TX rate (15754775). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "drop_percentage": 0.0
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 128,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "d0df1174e1c64fbb9b686a68ccc7e668"
+ },
+ "synthesis": {
+ "avg_delay_usec": 28.504292190616795,
+ "total_tx_rate": 15754775
+ }
+ },
+ {
+ "input": {
+ "rate": "ndr",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_512-fc_128-rate_ndr-2.json",
+ "frame_sizes": [
+ "512"
+ ],
+ "duration_sec": "10",
+ "flow_count": "128",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc18_loopback"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-04-25 00:16:16",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:07.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "EXT",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn1ter",
+ "name": "net_nfvbench_vn1ter",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1",
+ "name": "net_nfvbench_vn1",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": true,
+ "request_id": "64366f2a65a647cca7f0b40bfb5fab09",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "512"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 128,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_512-fc_128-rate_ndr-0.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": true,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "512"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2505,
+ 2505
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc18_loopback",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "flavor_nfvbench_dpdk",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_512-fc_128-rate_ndr-0.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "EXT": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "512": {
+ "ndr": {
+ "load_percent_per_direction": 96.97265625,
+ "timestamp_sec": 1650845917.113052,
+ "stats": {
+ "total_tx_rate": 11045806,
+ "overall": {
+ "rx_pkts": 110458069,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 659,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 110458069,
+ "avg_delay_usec": 209.00381663380335,
+ "min_delay_usec": 12,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 55226186,
+ "min_delay_usec": 12,
+ "drop_pct": 0,
+ "max_delay_usec": 547,
+ "tx_pkts": 55231883,
+ "avg_delay_usec": 135,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 55231883,
+ "min_delay_usec": 12,
+ "drop_pct": 0,
+ "max_delay_usec": 659,
+ "tx_pkts": 55226186,
+ "avg_delay_usec": 283,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 47010950336.0,
+ "theoretical_tx_rate_pps": 11748120.30075188
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 193.9453125,
+ "duration_sec": 10.0,
+ "l2frame_size": "512",
+ "rate_pps": 11392464,
+ "rate_bps": 48486328124.0,
+ "time_taken_sec": 137.6620888710022
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 11740270.58724066,
+ "rx_pkts": 111822104,
+ "time_ms": 1650845791960,
+ "drop_pct": 74763,
+ "total_tx_pps": 11189686,
+ "tx_pps": 11748120,
+ "tx_pkts": 111896867,
+ "drop_percentage": 0.06681420311794789
+ },
+ {
+ "rx_pps": 5874060.0,
+ "rx_pkts": 58379346,
+ "time_ms": 1650845804458,
+ "drop_pct": 0,
+ "total_tx_pps": 5837934,
+ "tx_pps": 5874060,
+ "tx_pkts": 58379346,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 8811090.0,
+ "rx_pkts": 87569019,
+ "time_ms": 1650845817019,
+ "drop_pct": 0,
+ "total_tx_pps": 8756901,
+ "tx_pps": 8811090,
+ "tx_pkts": 87569019,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 10279604.0,
+ "rx_pkts": 102174125,
+ "time_ms": 1650845829521,
+ "drop_pct": 0,
+ "total_tx_pps": 10217412,
+ "tx_pps": 10279604,
+ "tx_pkts": 102174125,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 11013862.0,
+ "rx_pkts": 109461268,
+ "time_ms": 1650845842017,
+ "drop_pct": 0,
+ "total_tx_pps": 10946126,
+ "tx_pps": 11013862,
+ "tx_pkts": 109461268,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 11380990.0,
+ "rx_pkts": 110849710,
+ "time_ms": 1650845854579,
+ "drop_pct": 0,
+ "total_tx_pps": 11084971,
+ "tx_pps": 11380990,
+ "tx_pkts": 110849710,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 11564015.280748308,
+ "rx_pkts": 110849157,
+ "time_ms": 1650845867092,
+ "drop_pct": 5164,
+ "total_tx_pps": 11085432,
+ "tx_pps": 11564554,
+ "tx_pkts": 110854321,
+ "drop_percentage": 0.0046583660009067215
+ },
+ {
+ "rx_pps": 11472150.680780374,
+ "rx_pkts": 110840480,
+ "time_ms": 1650845879589,
+ "drop_pct": 6003,
+ "total_tx_pps": 11084648,
+ "tx_pps": 11472772,
+ "tx_pkts": 110846483,
+ "drop_percentage": 0.005415598075403078
+ },
+ {
+ "rx_pps": 11426262.302117322,
+ "rx_pkts": 110851902,
+ "time_ms": 1650845892109,
+ "drop_pct": 6012,
+ "total_tx_pps": 11085791,
+ "tx_pps": 11426882,
+ "tx_pkts": 110857914,
+ "drop_percentage": 0.005423158151794197
+ },
+ {
+ "rx_pps": 11402964.464785693,
+ "rx_pkts": 110844769,
+ "time_ms": 1650845904604,
+ "drop_pct": 9444,
+ "total_tx_pps": 11085421,
+ "tx_pps": 11403936,
+ "tx_pkts": 110854213,
+ "drop_percentage": 0.008519297322511324
+ },
+ {
+ "rx_pps": 11392464.0,
+ "rx_pkts": 110458069,
+ "time_ms": 1650845917112,
+ "drop_pct": 0,
+ "total_tx_pps": 11045806,
+ "tx_pps": 11392464,
+ "tx_pkts": 110458069,
+ "ndr_pps": 5696232,
+ "drop_percentage": 0.0
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 128,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "64366f2a65a647cca7f0b40bfb5fab09"
+ },
+ "synthesis": {
+ "avg_delay_usec": 209.00381663380335,
+ "total_tx_rate": 11045806
+ }
+ },
+ {
+ "input": {
+ "rate": "ndr",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_768-fc_128-rate_ndr-2.json",
+ "frame_sizes": [
+ "768"
+ ],
+ "duration_sec": "10",
+ "flow_count": "128",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc18_loopback"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-04-25 00:28:09",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:07.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "EXT",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn1ter",
+ "name": "net_nfvbench_vn1ter",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1",
+ "name": "net_nfvbench_vn1",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": true,
+ "request_id": "88728d9ee6f543e1b8290c2e6e6e0d11",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "768"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 128,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_768-fc_128-rate_ndr-2.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": true,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "768"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2505,
+ 2505
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc18_loopback",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "flavor_nfvbench_dpdk",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_768-fc_128-rate_ndr-2.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "EXT": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "768": {
+ "ndr": {
+ "load_percent_per_direction": 95.60546875,
+ "timestamp_sec": 1650846629.6192143,
+ "stats": {
+ "total_tx_rate": 7537043,
+ "overall": {
+ "rx_pkts": 75370436,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 81,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 75370436,
+ "avg_delay_usec": 45.9999497150315,
+ "min_delay_usec": 9,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 37683323,
+ "min_delay_usec": 9,
+ "drop_pct": 0,
+ "max_delay_usec": 79,
+ "tx_pkts": 37687113,
+ "avg_delay_usec": 47,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 37687113,
+ "min_delay_usec": 14,
+ "drop_pct": 0,
+ "max_delay_usec": 81,
+ "tx_pkts": 37683323,
+ "avg_delay_usec": 45,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 47513519072.0,
+ "theoretical_tx_rate_pps": 7931472.081218274
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 191.2109375,
+ "duration_sec": 10.0,
+ "l2frame_size": "768",
+ "rate_pps": 7582920,
+ "rate_bps": 47802734374.0,
+ "time_taken_sec": 137.7126579284668
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 7866850.365150423,
+ "rx_pkts": 76167616,
+ "time_ms": 1650846504492,
+ "drop_pct": 625673,
+ "total_tx_pps": 7679328,
+ "tx_pps": 7931472,
+ "tx_pkts": 76793289,
+ "drop_percentage": 0.8147495805264963
+ },
+ {
+ "rx_pps": 3965736.0,
+ "rx_pkts": 39413470,
+ "time_ms": 1650846517007,
+ "drop_pct": 0,
+ "total_tx_pps": 3941347,
+ "tx_pps": 3965736,
+ "tx_pkts": 39413470,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 5948604.0,
+ "rx_pkts": 59120203,
+ "time_ms": 1650846529521,
+ "drop_pct": 0,
+ "total_tx_pps": 5912020,
+ "tx_pps": 5948604,
+ "tx_pkts": 59120203,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 6940038.0,
+ "rx_pkts": 68978427,
+ "time_ms": 1650846542024,
+ "drop_pct": 0,
+ "total_tx_pps": 6897842,
+ "tx_pps": 6940038,
+ "tx_pkts": 68978427,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 7435754.0,
+ "rx_pkts": 73900245,
+ "time_ms": 1650846554547,
+ "drop_pct": 0,
+ "total_tx_pps": 7390024,
+ "tx_pps": 7435754,
+ "tx_pkts": 73900245,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 7620933.009913207,
+ "rx_pkts": 75507422,
+ "time_ms": 1650846567096,
+ "drop_pct": 621017,
+ "total_tx_pps": 7612843,
+ "tx_pps": 7683612,
+ "tx_pkts": 76128439,
+ "drop_percentage": 0.8157490264577736
+ },
+ {
+ "rx_pps": 7559684.0,
+ "rx_pkts": 75135702,
+ "time_ms": 1650846579608,
+ "drop_pct": 0,
+ "total_tx_pps": 7513570,
+ "tx_pps": 7559684,
+ "tx_pkts": 75135702,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 7596700.373851032,
+ "rx_pkts": 75499812,
+ "time_ms": 1650846592122,
+ "drop_pct": 247942,
+ "total_tx_pps": 7574775,
+ "tx_pps": 7621648,
+ "tx_pkts": 75747754,
+ "drop_percentage": 0.32732587688342546
+ },
+ {
+ "rx_pps": 7590339.524822134,
+ "rx_pkts": 75444179,
+ "time_ms": 1650846604621,
+ "drop_pct": 3245,
+ "total_tx_pps": 7544742,
+ "tx_pps": 7590666,
+ "tx_pkts": 75447424,
+ "drop_percentage": 0.004301008341915027
+ },
+ {
+ "rx_pps": 7575174.0,
+ "rx_pkts": 75293443,
+ "time_ms": 1650846617119,
+ "drop_pct": 0,
+ "total_tx_pps": 7529344,
+ "tx_pps": 7575174,
+ "tx_pkts": 75293443,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 7582920.0,
+ "rx_pkts": 75370436,
+ "time_ms": 1650846629618,
+ "drop_pct": 0,
+ "total_tx_pps": 7537043,
+ "tx_pps": 7582920,
+ "tx_pkts": 75370436,
+ "ndr_pps": 3791460,
+ "drop_percentage": 0.0
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 128,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "88728d9ee6f543e1b8290c2e6e6e0d11"
+ },
+ "synthesis": {
+ "avg_delay_usec": 45.9999497150315,
+ "total_tx_rate": 7537043
+ }
+ },
+ {
+ "input": {
+ "rate": "ndr",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1024-fc_128-rate_ndr-2.json",
+ "frame_sizes": [
+ "1024"
+ ],
+ "duration_sec": "10",
+ "flow_count": "128",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc18_loopback"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-04-25 00:32:54",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:07.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "EXT",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn1ter",
+ "name": "net_nfvbench_vn1ter",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1",
+ "name": "net_nfvbench_vn1",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": true,
+ "request_id": "bf2b37b1fdf341adb7ee11f081d946e2",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "1024"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 128,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1024-fc_128-rate_ndr-1.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": true,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "1024"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2505,
+ 2505
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc18_loopback",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "flavor_nfvbench_dpdk",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1024-fc_128-rate_ndr-1.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "EXT": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "1024": {
+ "ndr": {
+ "load_percent_per_direction": 95.8984375,
+ "timestamp_sec": 1650846914.7221012,
+ "stats": {
+ "total_tx_rate": 5712627,
+ "overall": {
+ "rx_pkts": 57126277,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 102,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 57126277,
+ "avg_delay_usec": 49.5002764139522,
+ "min_delay_usec": 8,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 28561703,
+ "min_delay_usec": 8,
+ "drop_pct": 0,
+ "max_delay_usec": 102,
+ "tx_pkts": 28564574,
+ "avg_delay_usec": 44,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 28564574,
+ "min_delay_usec": 8,
+ "drop_pct": 0,
+ "max_delay_usec": 94,
+ "tx_pkts": 28561703,
+ "avg_delay_usec": 55,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 47711860704.0,
+ "theoretical_tx_rate_pps": 5986590.038314176
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 191.796875,
+ "duration_sec": 10.0,
+ "l2frame_size": "1024",
+ "rate_pps": 5741046,
+ "rate_bps": 47949218750.0,
+ "time_taken_sec": 137.80328631401062
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 5905471.915950395,
+ "rx_pkts": 57662777,
+ "time_ms": 1650846789487,
+ "drop_pct": 792061,
+ "total_tx_pps": 5845483,
+ "tx_pps": 5986590,
+ "tx_pkts": 58454838,
+ "drop_percentage": 1.3549964846365667
+ },
+ {
+ "rx_pps": 2993294.0,
+ "rx_pkts": 29748854,
+ "time_ms": 1650846802027,
+ "drop_pct": 0,
+ "total_tx_pps": 2974885,
+ "tx_pps": 2993294,
+ "tx_pkts": 29748854,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 4489942.0,
+ "rx_pkts": 44627778,
+ "time_ms": 1650846814534,
+ "drop_pct": 0,
+ "total_tx_pps": 4462777,
+ "tx_pps": 4489942,
+ "tx_pkts": 44627778,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 5238266.0,
+ "rx_pkts": 52060508,
+ "time_ms": 1650846827044,
+ "drop_pct": 0,
+ "total_tx_pps": 5206050,
+ "tx_pps": 5238266,
+ "tx_pkts": 52060508,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 5612428.0,
+ "rx_pkts": 55779118,
+ "time_ms": 1650846839558,
+ "drop_pct": 0,
+ "total_tx_pps": 5577911,
+ "tx_pps": 5612428,
+ "tx_pkts": 55779118,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 5751078.058987604,
+ "rx_pkts": 57157093,
+ "time_ms": 1650846852099,
+ "drop_pct": 481321,
+ "total_tx_pps": 5763841,
+ "tx_pps": 5799508,
+ "tx_pkts": 57638414,
+ "drop_percentage": 0.8350698199294658
+ },
+ {
+ "rx_pps": 5705968.0,
+ "rx_pkts": 56714474,
+ "time_ms": 1650846864604,
+ "drop_pct": 0,
+ "total_tx_pps": 5671447,
+ "tx_pps": 5705968,
+ "tx_pkts": 56714474,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 5750757.520096343,
+ "rx_pkts": 57153905,
+ "time_ms": 1650846877117,
+ "drop_pct": 19683,
+ "total_tx_pps": 5717358,
+ "tx_pps": 5752738,
+ "tx_pkts": 57173588,
+ "drop_percentage": 0.03442673564583702
+ },
+ {
+ "rx_pps": 5729352.0,
+ "rx_pkts": 56941164,
+ "time_ms": 1650846889640,
+ "drop_pct": 0,
+ "total_tx_pps": 5694116,
+ "tx_pps": 5729352,
+ "tx_pkts": 56941164,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 5741046.0,
+ "rx_pkts": 57126277,
+ "time_ms": 1650846902209,
+ "drop_pct": 0,
+ "total_tx_pps": 5712627,
+ "tx_pps": 5741046,
+ "tx_pkts": 57126277,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 5746066.120913432,
+ "rx_pkts": 57107283,
+ "time_ms": 1650846914721,
+ "drop_pct": 8208,
+ "total_tx_pps": 5711549,
+ "tx_pps": 5746892,
+ "tx_pkts": 57115491,
+ "ndr_pps": 2870523,
+ "drop_percentage": 0.014370882323326258
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 128,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "bf2b37b1fdf341adb7ee11f081d946e2"
+ },
+ "synthesis": {
+ "avg_delay_usec": 49.5002764139522,
+ "total_tx_rate": 5712627
+ }
+ },
+ {
+ "input": {
+ "rate": "ndr",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1280-fc_128-rate_ndr-2.json",
+ "frame_sizes": [
+ "1280"
+ ],
+ "duration_sec": "10",
+ "flow_count": "128",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc18_loopback"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-04-25 00:40:01",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:07.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "EXT",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn1ter",
+ "name": "net_nfvbench_vn1ter",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1",
+ "name": "net_nfvbench_vn1",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": true,
+ "request_id": "efd7195831c840da8ce6081eb537d3bb",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "1280"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 128,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1280-fc_128-rate_ndr-1.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": true,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "1280"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2505,
+ 2505
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc18_loopback",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "flavor_nfvbench_dpdk",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1280-fc_128-rate_ndr-1.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "EXT": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "1280": {
+ "ndr": {
+ "load_percent_per_direction": 96.09375,
+ "timestamp_sec": 1650847342.0063174,
+ "stats": {
+ "total_tx_rate": 4591939,
+ "overall": {
+ "rx_pkts": 45919398,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 114,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 45919398,
+ "avg_delay_usec": 76.50007539297445,
+ "min_delay_usec": 7,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 22958545,
+ "min_delay_usec": 8,
+ "drop_pct": 0,
+ "max_delay_usec": 0,
+ "tx_pkts": 22960853,
+ "avg_delay_usec": 75,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 22960853,
+ "min_delay_usec": 7,
+ "drop_pct": 0,
+ "max_delay_usec": 114,
+ "tx_pkts": 22958545,
+ "avg_delay_usec": 78,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 47756165600.0,
+ "theoretical_tx_rate_pps": 4807692.307692308
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 192.1875,
+ "duration_sec": 10.0,
+ "l2frame_size": "1280",
+ "rate_pps": 4619890,
+ "rate_bps": 48046875000.0,
+ "time_taken_sec": 137.62104272842407
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 4726361.303264256,
+ "rx_pkts": 46391573,
+ "time_ms": 1650847216874,
+ "drop_pct": 798301,
+ "total_tx_pps": 4718987,
+ "tx_pps": 4807692,
+ "tx_pkts": 47189874,
+ "drop_percentage": 1.6916786003709186
+ },
+ {
+ "rx_pps": 2403846.0,
+ "rx_pkts": 23890625,
+ "time_ms": 1650847229398,
+ "drop_pct": 0,
+ "total_tx_pps": 2389062,
+ "tx_pps": 2403846,
+ "tx_pkts": 23890625,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 3605768.0,
+ "rx_pkts": 35835928,
+ "time_ms": 1650847241898,
+ "drop_pct": 0,
+ "total_tx_pps": 3583592,
+ "tx_pps": 3605768,
+ "tx_pkts": 35835928,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 4206730.0,
+ "rx_pkts": 41812793,
+ "time_ms": 1650847254402,
+ "drop_pct": 0,
+ "total_tx_pps": 4181279,
+ "tx_pps": 4206730,
+ "tx_pkts": 41812793,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 4507210.0,
+ "rx_pkts": 44794910,
+ "time_ms": 1650847266925,
+ "drop_pct": 0,
+ "total_tx_pps": 4479491,
+ "tx_pps": 4507210,
+ "tx_pkts": 44794910,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 4626551.174328503,
+ "rx_pkts": 45980982,
+ "time_ms": 1650847279421,
+ "drop_pct": 307088,
+ "total_tx_pps": 4628807,
+ "tx_pps": 4657450,
+ "tx_pkts": 46288070,
+ "drop_percentage": 0.663427963187923
+ },
+ {
+ "rx_pps": 4582330.0,
+ "rx_pkts": 45541488,
+ "time_ms": 1650847291945,
+ "drop_pct": 0,
+ "total_tx_pps": 4554148,
+ "tx_pps": 4582330,
+ "tx_pkts": 45541488,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 4619890.0,
+ "rx_pkts": 45919398,
+ "time_ms": 1650847304448,
+ "drop_pct": 0,
+ "total_tx_pps": 4591939,
+ "tx_pps": 4619890,
+ "tx_pkts": 45919398,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 4626459.929477386,
+ "rx_pkts": 45984700,
+ "time_ms": 1650847316968,
+ "drop_pct": 121362,
+ "total_tx_pps": 4610606,
+ "tx_pps": 4638670,
+ "tx_pkts": 46106062,
+ "drop_percentage": 0.26322352145364314
+ },
+ {
+ "rx_pps": 4626470.421255804,
+ "rx_pkts": 45980179,
+ "time_ms": 1650847329472,
+ "drop_pct": 27923,
+ "total_tx_pps": 4600810,
+ "tx_pps": 4629280,
+ "tx_pkts": 46008102,
+ "drop_percentage": 0.060691484295526905
+ },
+ {
+ "rx_pps": 4624386.171056487,
+ "rx_pkts": 45959463,
+ "time_ms": 1650847342005,
+ "drop_pct": 1986,
+ "total_tx_pps": 4596144,
+ "tx_pps": 4624586,
+ "tx_pkts": 45961449,
+ "ndr_pps": 2309945,
+ "drop_percentage": 0.00432101259470736
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 128,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "efd7195831c840da8ce6081eb537d3bb"
+ },
+ "synthesis": {
+ "avg_delay_usec": 76.50007539297445,
+ "total_tx_rate": 4591939
+ }
+ },
+ {
+ "input": {
+ "rate": "ndr",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1518-fc_128-rate_ndr-2.json",
+ "frame_sizes": [
+ "1518"
+ ],
+ "duration_sec": "10",
+ "flow_count": "128",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc18_loopback"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-04-25 00:44:46",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:07.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "EXT",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn1ter",
+ "name": "net_nfvbench_vn1ter",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1",
+ "name": "net_nfvbench_vn1",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": true,
+ "request_id": "779e1d4206d7447fac094ddc44eb2c29",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "1518"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 128,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1518-fc_128-rate_ndr-0.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": true,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "1518"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2505,
+ 2505
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc18_loopback",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "flavor_nfvbench_dpdk",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1518-fc_128-rate_ndr-0.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "EXT": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "1518": {
+ "ndr": {
+ "load_percent_per_direction": 95.99609375,
+ "timestamp_sec": 1650847627.0343828,
+ "stats": {
+ "total_tx_rate": 3877409,
+ "overall": {
+ "rx_pkts": 38774090,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 127,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 38774090,
+ "avg_delay_usec": 90.0,
+ "min_delay_usec": 7,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 19386070,
+ "min_delay_usec": 8,
+ "drop_pct": 0,
+ "max_delay_usec": 122,
+ "tx_pkts": 19388020,
+ "avg_delay_usec": 90,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 19388020,
+ "min_delay_usec": 7,
+ "drop_pct": 0,
+ "max_delay_usec": 127,
+ "tx_pkts": 19386070,
+ "avg_delay_usec": 90,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 47707640336.0,
+ "theoretical_tx_rate_pps": 4063719.1157347206
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 191.9921875,
+ "duration_sec": 10.0,
+ "l2frame_size": "1518",
+ "rate_pps": 3901010,
+ "rate_bps": 47998046874.0,
+ "time_taken_sec": 137.63707971572876
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 3982058.717650659,
+ "rx_pkts": 39160327,
+ "time_ms": 1650847501905,
+ "drop_pct": 803053,
+ "total_tx_pps": 3996338,
+ "tx_pps": 4063718,
+ "tx_pkts": 39963380,
+ "drop_percentage": 2.0094721717732584
+ },
+ {
+ "rx_pps": 2031858.0,
+ "rx_pkts": 20193623,
+ "time_ms": 1650847514427,
+ "drop_pct": 0,
+ "total_tx_pps": 2019362,
+ "tx_pps": 2031858,
+ "tx_pkts": 20193623,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 3047788.0,
+ "rx_pkts": 30291967,
+ "time_ms": 1650847526954,
+ "drop_pct": 0,
+ "total_tx_pps": 3029196,
+ "tx_pps": 3047788,
+ "tx_pkts": 30291967,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 3555754.0,
+ "rx_pkts": 35338865,
+ "time_ms": 1650847539460,
+ "drop_pct": 0,
+ "total_tx_pps": 3533886,
+ "tx_pps": 3555754,
+ "tx_pkts": 35338865,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 3809736.0,
+ "rx_pkts": 37920208,
+ "time_ms": 1650847551974,
+ "drop_pct": 0,
+ "total_tx_pps": 3792020,
+ "tx_pps": 3809736,
+ "tx_pkts": 37920208,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 3905724.3403039556,
+ "rx_pkts": 38817042,
+ "time_ms": 1650847564492,
+ "drop_pct": 308110,
+ "total_tx_pps": 3912515,
+ "tx_pps": 3936726,
+ "tx_pkts": 39125152,
+ "drop_percentage": 0.787498538024849
+ },
+ {
+ "rx_pps": 3873232.0,
+ "rx_pkts": 38494117,
+ "time_ms": 1650847576998,
+ "drop_pct": 0,
+ "total_tx_pps": 3849411,
+ "tx_pps": 3873232,
+ "tx_pkts": 38494117,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 3904613.646950039,
+ "rx_pkts": 38806005,
+ "time_ms": 1650847589503,
+ "drop_pct": 3641,
+ "total_tx_pps": 3880964,
+ "tx_pps": 3904980,
+ "tx_pkts": 38809646,
+ "drop_percentage": 0.009381688253482137
+ },
+ {
+ "rx_pps": 3889106.0,
+ "rx_pkts": 38651881,
+ "time_ms": 1650847602006,
+ "drop_pct": 0,
+ "total_tx_pps": 3865188,
+ "tx_pps": 3889106,
+ "tx_pkts": 38651881,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 3897042.0,
+ "rx_pkts": 38730754,
+ "time_ms": 1650847614533,
+ "drop_pct": 0,
+ "total_tx_pps": 3873075,
+ "tx_pps": 3897042,
+ "tx_pkts": 38730754,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 3901010.0,
+ "rx_pkts": 38774090,
+ "time_ms": 1650847627033,
+ "drop_pct": 0,
+ "total_tx_pps": 3877409,
+ "tx_pps": 3901010,
+ "tx_pkts": 38774090,
+ "ndr_pps": 1950505,
+ "drop_percentage": 0.0
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 128,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "779e1d4206d7447fac094ddc44eb2c29"
+ },
+ "synthesis": {
+ "avg_delay_usec": 90.0,
+ "total_tx_rate": 3877409
+ }
+ },
+ {
+ "input": {
+ "rate": "ndr",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_IMIX-fc_128-rate_ndr-2.json",
+ "frame_sizes": [
+ "IMIX"
+ ],
+ "duration_sec": "10",
+ "flow_count": "128",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc18_loopback"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-04-25 00:51:54",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:07.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "EXT",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn1ter",
+ "name": "net_nfvbench_vn1ter",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1",
+ "name": "net_nfvbench_vn1",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": true,
+ "request_id": "b4b97675381e45d68bdac84b0319071d",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "IMIX"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 128,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_IMIX-fc_128-rate_ndr-0.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": true,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "IMIX"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2505,
+ 2505
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc18_loopback",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "flavor_nfvbench_dpdk",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_IMIX-fc_128-rate_ndr-0.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "EXT": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "warning": "WARNING: There is a significant difference between requested TX rate (16368398) and actual TX rate (14161735). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "IMIX": {
+ "ndr": {
+ "load_percent_per_direction": 100.0,
+ "timestamp_sec": 1650847929.3742573,
+ "stats": {
+ "total_tx_rate": 14161735,
+ "overall": {
+ "rx_pkts": 141617354,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 626,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 141617354,
+ "avg_delay_usec": 338.5356628538618,
+ "min_delay_usec": 7,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 70907706,
+ "min_delay_usec": 7,
+ "drop_pct": 0,
+ "max_delay_usec": 626,
+ "tx_pkts": 70709648,
+ "avg_delay_usec": 364,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 70709648,
+ "min_delay_usec": 7,
+ "drop_pct": 0,
+ "max_delay_usec": 613,
+ "tx_pkts": 70907706,
+ "avg_delay_usec": 313,
+ "drop_percentage": 0.0
+ },
+ "warning": "WARNING: There is a significant difference between requested TX rate (16368398) and actual TX rate (14161735). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 43259379846.666664,
+ "theoretical_tx_rate_pps": 16368398.079441292
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 200.0,
+ "duration_sec": 10.0,
+ "l2frame_size": "IMIX",
+ "rate_pps": 16368398,
+ "rate_bps": 50000000000.0,
+ "time_taken_sec": 12.501379013061523
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 16368398.0,
+ "rx_pkts": 141617354,
+ "time_ms": 1650847929373,
+ "drop_pct": 0,
+ "total_tx_pps": 14161735,
+ "tx_pps": 16368398,
+ "tx_pkts": 141617354,
+ "ndr_pps": 8184199,
+ "warning": "WARNING: There is a significant difference between requested TX rate (16368398) and actual TX rate (14161735). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "drop_percentage": 0.0
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 128,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "b4b97675381e45d68bdac84b0319071d"
+ },
+ "synthesis": {
+ "avg_delay_usec": 338.5356628538618,
+ "total_tx_rate": 14161735
+ }
+ },
+ {
+ "input": {
+ "rate": "ndr",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_9000-fc_128-rate_ndr-2.json",
+ "frame_sizes": [
+ "9000"
+ ],
+ "duration_sec": "10",
+ "flow_count": "128",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc18_loopback"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-04-25 00:52:42",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:07.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "EXT",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn1ter",
+ "name": "net_nfvbench_vn1ter",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1",
+ "name": "net_nfvbench_vn1",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": true,
+ "request_id": "963406d7c07b4253af12344ca0127fe4",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "9000"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 128,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_9000-fc_128-rate_ndr-0.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": true,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "9000"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2505,
+ 2505
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc18_loopback",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "flavor_nfvbench_dpdk",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_9000-fc_128-rate_ndr-0.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "EXT": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "9000": {
+ "ndr": {
+ "load_percent_per_direction": 95.99609375,
+ "timestamp_sec": 1650848102.789528,
+ "stats": {
+ "total_tx_rate": 661069,
+ "overall": {
+ "rx_pkts": 6610694,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 546,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 6610694,
+ "avg_delay_usec": 477.49957311592397,
+ "min_delay_usec": 15,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 3305181,
+ "min_delay_usec": 15,
+ "drop_pct": 0,
+ "max_delay_usec": 546,
+ "tx_pkts": 3305513,
+ "avg_delay_usec": 486,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 3305513,
+ "min_delay_usec": 16,
+ "drop_pct": 0,
+ "max_delay_usec": 524,
+ "tx_pkts": 3305181,
+ "avg_delay_usec": 469,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 47702739040.0,
+ "theoretical_tx_rate_pps": 692904.6563192905
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 191.9921875,
+ "duration_sec": 10.0,
+ "l2frame_size": "9000",
+ "rate_pps": 665160,
+ "rate_bps": 47998046874.0,
+ "time_taken_sec": 137.69506430625916
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 668576.9554345435,
+ "rx_pkts": 6669405,
+ "time_ms": 1650847977603,
+ "drop_pct": 242675,
+ "total_tx_pps": 691208,
+ "tx_pps": 692904,
+ "tx_pkts": 6912080,
+ "drop_percentage": 3.510882397194477
+ },
+ {
+ "rx_pps": 346452.0,
+ "rx_pkts": 3443214,
+ "time_ms": 1650847990100,
+ "drop_pct": 0,
+ "total_tx_pps": 344321,
+ "tx_pps": 346452,
+ "tx_pkts": 3443214,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 519678.0,
+ "rx_pkts": 5164820,
+ "time_ms": 1650848002628,
+ "drop_pct": 0,
+ "total_tx_pps": 516482,
+ "tx_pps": 519678,
+ "tx_pkts": 5164820,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 606290.0,
+ "rx_pkts": 6025615,
+ "time_ms": 1650848015147,
+ "drop_pct": 0,
+ "total_tx_pps": 602561,
+ "tx_pps": 606290,
+ "tx_pkts": 6025615,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 649598.0,
+ "rx_pkts": 6456031,
+ "time_ms": 1650848027664,
+ "drop_pct": 0,
+ "total_tx_pps": 645603,
+ "tx_pps": 649598,
+ "tx_pkts": 6456031,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 665820.941861537,
+ "rx_pkts": 6616931,
+ "time_ms": 1650848040183,
+ "drop_pct": 53954,
+ "total_tx_pps": 667088,
+ "tx_pps": 671250,
+ "tx_pkts": 6670885,
+ "drop_percentage": 0.808798232918121
+ },
+ {
+ "rx_pps": 660424.0,
+ "rx_pkts": 6563956,
+ "time_ms": 1650848052688,
+ "drop_pct": 0,
+ "total_tx_pps": 656395,
+ "tx_pps": 660424,
+ "tx_pkts": 6563956,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 665769.8810895403,
+ "rx_pkts": 6616756,
+ "time_ms": 1650848065187,
+ "drop_pct": 677,
+ "total_tx_pps": 661743,
+ "tx_pps": 665838,
+ "tx_pkts": 6617433,
+ "drop_percentage": 0.010230553146514668
+ },
+ {
+ "rx_pps": 663130.0,
+ "rx_pkts": 6590521,
+ "time_ms": 1650848077706,
+ "drop_pct": 0,
+ "total_tx_pps": 659052,
+ "tx_pps": 663130,
+ "tx_pkts": 6590521,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 664484.0,
+ "rx_pkts": 6604642,
+ "time_ms": 1650848090288,
+ "drop_pct": 0,
+ "total_tx_pps": 660464,
+ "tx_pps": 664484,
+ "tx_pkts": 6604642,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 665160.0,
+ "rx_pkts": 6610694,
+ "time_ms": 1650848102788,
+ "drop_pct": 0,
+ "total_tx_pps": 661069,
+ "tx_pps": 665160,
+ "tx_pkts": 6610694,
+ "ndr_pps": 332580,
+ "drop_percentage": 0.0
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 128,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "963406d7c07b4253af12344ca0127fe4"
+ },
+ "synthesis": {
+ "avg_delay_usec": 477.49957311592397,
+ "total_tx_rate": 661069
+ }
+ },
+ {
+ "input": {
+ "rate": "ndr",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_64-fc_10k-rate_ndr-2.json",
+ "frame_sizes": [
+ "64"
+ ],
+ "duration_sec": "10",
+ "flow_count": "10k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc18_loopback"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-04-25 00:59:49",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:07.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "EXT",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn1ter",
+ "name": "net_nfvbench_vn1ter",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1",
+ "name": "net_nfvbench_vn1",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": true,
+ "request_id": "ddbeeb16db0b4920bd33f409fee876fe",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "64"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 10000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_64-fc_10k-rate_ndr-0.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": true,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "64"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2505,
+ 2505
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc18_loopback",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "flavor_nfvbench_dpdk",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_64-fc_10k-rate_ndr-0.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "EXT": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "warning": "WARNING: There is a significant difference between requested TX rate (74404760) and actual TX rate (16548126). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "64": {
+ "ndr": {
+ "load_percent_per_direction": 100.0,
+ "timestamp_sec": 1650848407.2528977,
+ "stats": {
+ "total_tx_rate": 16548126,
+ "overall": {
+ "rx_pkts": 165481260,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 97,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 165481260,
+ "avg_delay_usec": 62.48000978479376,
+ "min_delay_usec": 5,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 82995092,
+ "min_delay_usec": 7,
+ "drop_pct": 0,
+ "max_delay_usec": 97,
+ "tx_pkts": 82486168,
+ "avg_delay_usec": 56,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 82486168,
+ "min_delay_usec": 5,
+ "drop_pct": 0,
+ "max_delay_usec": 92,
+ "tx_pkts": 82995092,
+ "avg_delay_usec": 69,
+ "drop_percentage": 0.0
+ },
+ "warning": "WARNING: There is a significant difference between requested TX rate (74404760) and actual TX rate (16548126). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 11120340672.0,
+ "theoretical_tx_rate_pps": 74404761.90476191
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 200.0,
+ "duration_sec": 10.0,
+ "l2frame_size": "64",
+ "rate_pps": 74404760,
+ "rate_bps": 50000000000.0,
+ "time_taken_sec": 12.518044471740723
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 74404760.0,
+ "rx_pkts": 165481260,
+ "time_ms": 1650848407252,
+ "drop_pct": 0,
+ "total_tx_pps": 16548126,
+ "tx_pps": 74404760,
+ "tx_pkts": 165481260,
+ "ndr_pps": 37202380,
+ "warning": "WARNING: There is a significant difference between requested TX rate (74404760) and actual TX rate (16548126). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "drop_percentage": 0.0
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 10000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "ddbeeb16db0b4920bd33f409fee876fe"
+ },
+ "synthesis": {
+ "avg_delay_usec": 62.48000978479376,
+ "total_tx_rate": 16548126
+ }
+ },
+ {
+ "input": {
+ "rate": "ndr",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_128-fc_10k-rate_ndr-2.json",
+ "frame_sizes": [
+ "128"
+ ],
+ "duration_sec": "10",
+ "flow_count": "10k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc18_loopback"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-04-25 01:00:44",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:07.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "EXT",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn1ter",
+ "name": "net_nfvbench_vn1ter",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1",
+ "name": "net_nfvbench_vn1",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": true,
+ "request_id": "a82a876e3fc54fa087802fe4f8d84f1b",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "128"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 10000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_128-fc_10k-rate_ndr-0.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": true,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "128"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2505,
+ 2505
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc18_loopback",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "flavor_nfvbench_dpdk",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_128-fc_10k-rate_ndr-0.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "EXT": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "128": {
+ "ndr": {
+ "load_percent_per_direction": 100.0,
+ "timestamp_sec": 1650848461.466436,
+ "stats": {
+ "total_tx_rate": 18007502,
+ "overall": {
+ "rx_pkts": 180075026,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 59,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 180075026,
+ "avg_delay_usec": 35.99551240381329,
+ "min_delay_usec": 5,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 90172197,
+ "min_delay_usec": 6,
+ "drop_pct": 0,
+ "max_delay_usec": 59,
+ "tx_pkts": 89902829,
+ "avg_delay_usec": 33,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 89902829,
+ "min_delay_usec": 5,
+ "drop_pct": 0,
+ "max_delay_usec": 58,
+ "tx_pkts": 90172197,
+ "avg_delay_usec": 39,
+ "drop_percentage": 0.0
+ },
+ "warning": "WARNING: There is a significant difference between requested TX rate (42229728) and actual TX rate (18007502). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 21320882368.0,
+ "theoretical_tx_rate_pps": 42229729.72972973
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 200.0,
+ "duration_sec": 10.0,
+ "l2frame_size": "128",
+ "rate_pps": 42229728,
+ "rate_bps": 50000000000.0,
+ "time_taken_sec": 12.491197109222412
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 42229728.0,
+ "rx_pkts": 180075026,
+ "time_ms": 1650848461465,
+ "drop_pct": 0,
+ "total_tx_pps": 18007502,
+ "tx_pps": 42229728,
+ "tx_pkts": 180075026,
+ "ndr_pps": 21114864,
+ "warning": "WARNING: There is a significant difference between requested TX rate (42229728) and actual TX rate (18007502). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "drop_percentage": 0.0
+ }
+ ]
+ }
+ },
+ "warning": "WARNING: There is a significant difference between requested TX rate (42229728) and actual TX rate (18007502). The traffic generator may not have sufficient CPU to achieve the requested TX rate."
+ },
+ "flow_count": 10000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "a82a876e3fc54fa087802fe4f8d84f1b"
+ },
+ "synthesis": {
+ "avg_delay_usec": 35.99551240381329,
+ "total_tx_rate": 18007502
+ }
+ },
+ {
+ "input": {
+ "rate": "ndr",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_256-fc_10k-rate_ndr-2.json",
+ "frame_sizes": [
+ "256"
+ ],
+ "duration_sec": "10",
+ "flow_count": "10k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc18_loopback"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-04-25 01:01:38",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:07.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "EXT",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn1ter",
+ "name": "net_nfvbench_vn1ter",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1",
+ "name": "net_nfvbench_vn1",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": true,
+ "request_id": "cf10f85f2df3470fb233184b92aea608",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "256"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 10000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_256-fc_10k-rate_ndr-0.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": true,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "256"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2505,
+ 2505
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc18_loopback",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "flavor_nfvbench_dpdk",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_256-fc_10k-rate_ndr-0.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "EXT": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "warning": "WARNING: There is a significant difference between requested TX rate (22644926) and actual TX rate (15836292). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "256": {
+ "ndr": {
+ "load_percent_per_direction": 100.0,
+ "timestamp_sec": 1650848515.7108045,
+ "stats": {
+ "total_tx_rate": 15836292,
+ "overall": {
+ "rx_pkts": 158362920,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 52,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 158362920,
+ "avg_delay_usec": 30.001019203232676,
+ "min_delay_usec": 7,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 79262162,
+ "min_delay_usec": 7,
+ "drop_pct": 0,
+ "max_delay_usec": 52,
+ "tx_pkts": 79100758,
+ "avg_delay_usec": 31,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 79100758,
+ "min_delay_usec": 7,
+ "drop_pct": 0,
+ "max_delay_usec": 48,
+ "tx_pkts": 79262162,
+ "avg_delay_usec": 29,
+ "drop_percentage": 0.0
+ },
+ "warning": "WARNING: There is a significant difference between requested TX rate (22644926) and actual TX rate (15836292). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 34966532736.0,
+ "theoretical_tx_rate_pps": 22644927.536231883
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 200.0,
+ "duration_sec": 10.0,
+ "l2frame_size": "256",
+ "rate_pps": 22644926,
+ "rate_bps": 50000000000.0,
+ "time_taken_sec": 12.50765085220337
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 22644926.0,
+ "rx_pkts": 158362920,
+ "time_ms": 1650848515710,
+ "drop_pct": 0,
+ "total_tx_pps": 15836292,
+ "tx_pps": 22644926,
+ "tx_pkts": 158362920,
+ "ndr_pps": 11322463,
+ "warning": "WARNING: There is a significant difference between requested TX rate (22644926) and actual TX rate (15836292). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "drop_percentage": 0.0
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 10000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "cf10f85f2df3470fb233184b92aea608"
+ },
+ "synthesis": {
+ "avg_delay_usec": 30.001019203232676,
+ "total_tx_rate": 15836292
+ }
+ },
+ {
+ "input": {
+ "rate": "ndr",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_512-fc_10k-rate_ndr-2.json",
+ "frame_sizes": [
+ "512"
+ ],
+ "duration_sec": "10",
+ "flow_count": "10k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc18_loopback"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-04-25 01:02:32",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:07.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "EXT",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn1ter",
+ "name": "net_nfvbench_vn1ter",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1",
+ "name": "net_nfvbench_vn1",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": true,
+ "request_id": "d1967af0759441ed88139b68c43d44e4",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "512"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 10000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_512-fc_10k-rate_ndr-0.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": true,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "512"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2505,
+ 2505
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc18_loopback",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "flavor_nfvbench_dpdk",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_512-fc_10k-rate_ndr-0.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "EXT": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "512": {
+ "ndr": {
+ "load_percent_per_direction": 100.0,
+ "timestamp_sec": 1650848569.8980005,
+ "stats": {
+ "total_tx_rate": 11105755,
+ "overall": {
+ "rx_pkts": 111057559,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 681,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 111057559,
+ "avg_delay_usec": 237.93781095080615,
+ "min_delay_usec": 11,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 55569890,
+ "min_delay_usec": 22,
+ "drop_pct": 0,
+ "max_delay_usec": 670,
+ "tx_pkts": 55487669,
+ "avg_delay_usec": 154,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 55487669,
+ "min_delay_usec": 11,
+ "drop_pct": 0,
+ "max_delay_usec": 681,
+ "tx_pkts": 55569890,
+ "avg_delay_usec": 322,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 47266093280.0,
+ "theoretical_tx_rate_pps": 11748120.30075188
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 200.0,
+ "duration_sec": 10.0,
+ "l2frame_size": "512",
+ "rate_pps": 11748120,
+ "rate_bps": 50000000000.0,
+ "time_taken_sec": 12.489594459533691
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 11748120.0,
+ "rx_pkts": 111057559,
+ "time_ms": 1650848569897,
+ "drop_pct": 0,
+ "total_tx_pps": 11105755,
+ "tx_pps": 11748120,
+ "tx_pkts": 111057559,
+ "ndr_pps": 5874060,
+ "drop_percentage": 0.0
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 10000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "d1967af0759441ed88139b68c43d44e4"
+ },
+ "synthesis": {
+ "avg_delay_usec": 237.93781095080615,
+ "total_tx_rate": 11105755
+ }
+ },
+ {
+ "input": {
+ "rate": "ndr",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_768-fc_10k-rate_ndr-2.json",
+ "frame_sizes": [
+ "768"
+ ],
+ "duration_sec": "10",
+ "flow_count": "10k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc18_loopback"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-04-25 01:05:33",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:07.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "EXT",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn1ter",
+ "name": "net_nfvbench_vn1ter",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1",
+ "name": "net_nfvbench_vn1",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": true,
+ "request_id": "18d99ccb52d7454da33eba941f8a8819",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "768"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 10000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_768-fc_10k-rate_ndr-0.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": true,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "768"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2505,
+ 2505
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc18_loopback",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "flavor_nfvbench_dpdk",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_768-fc_10k-rate_ndr-0.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "EXT": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "768": {
+ "ndr": {
+ "load_percent_per_direction": 95.60546875,
+ "timestamp_sec": 1650848875.7264826,
+ "stats": {
+ "total_tx_rate": 7537043,
+ "overall": {
+ "rx_pkts": 75370436,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 80,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 75370436,
+ "avg_delay_usec": 47.499673147704755,
+ "min_delay_usec": 10,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 37683323,
+ "min_delay_usec": 10,
+ "drop_pct": 0,
+ "max_delay_usec": 80,
+ "tx_pkts": 37687113,
+ "avg_delay_usec": 54,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 37687113,
+ "min_delay_usec": 12,
+ "drop_pct": 0,
+ "max_delay_usec": 79,
+ "tx_pkts": 37683323,
+ "avg_delay_usec": 41,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 47513519072.0,
+ "theoretical_tx_rate_pps": 7931472.081218274
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 191.2109375,
+ "duration_sec": 10.0,
+ "l2frame_size": "768",
+ "rate_pps": 7582920,
+ "rate_bps": 47802734374.0,
+ "time_taken_sec": 137.65466976165771
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 7867109.536873953,
+ "rx_pkts": 75914335,
+ "time_ms": 1650848750578,
+ "drop_pct": 621071,
+ "total_tx_pps": 7653540,
+ "tx_pps": 7931472,
+ "tx_pkts": 76535406,
+ "drop_percentage": 0.8114819434027697
+ },
+ {
+ "rx_pps": 3965736.0,
+ "rx_pkts": 39453125,
+ "time_ms": 1650848763085,
+ "drop_pct": 0,
+ "total_tx_pps": 3945312,
+ "tx_pps": 3965736,
+ "tx_pkts": 39453125,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 5948604.0,
+ "rx_pkts": 59120202,
+ "time_ms": 1650848775586,
+ "drop_pct": 0,
+ "total_tx_pps": 5912020,
+ "tx_pps": 5948604,
+ "tx_pkts": 59120202,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 6940038.0,
+ "rx_pkts": 68973579,
+ "time_ms": 1650848788099,
+ "drop_pct": 0,
+ "total_tx_pps": 6897357,
+ "tx_pps": 6940038,
+ "tx_pkts": 68973579,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 7435754.0,
+ "rx_pkts": 73900239,
+ "time_ms": 1650848800633,
+ "drop_pct": 0,
+ "total_tx_pps": 7390023,
+ "tx_pps": 7435754,
+ "tx_pkts": 73900239,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 7620916.349942744,
+ "rx_pkts": 75507249,
+ "time_ms": 1650848813170,
+ "drop_pct": 621182,
+ "total_tx_pps": 7612843,
+ "tx_pps": 7683612,
+ "tx_pkts": 76128431,
+ "drop_percentage": 0.8159658511811442
+ },
+ {
+ "rx_pps": 7559684.0,
+ "rx_pkts": 75131929,
+ "time_ms": 1650848825666,
+ "drop_pct": 0,
+ "total_tx_pps": 7513192,
+ "tx_pps": 7559684,
+ "tx_pkts": 75131929,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 7596717.342100184,
+ "rx_pkts": 75644305,
+ "time_ms": 1650848838182,
+ "drop_pct": 248247,
+ "total_tx_pps": 7589255,
+ "tx_pps": 7621648,
+ "tx_pkts": 75892552,
+ "drop_percentage": 0.3271032445977044
+ },
+ {
+ "rx_pps": 7590338.485813464,
+ "rx_pkts": 75436585,
+ "time_ms": 1650848850710,
+ "drop_pct": 3255,
+ "total_tx_pps": 7543984,
+ "tx_pps": 7590666,
+ "tx_pkts": 75439840,
+ "drop_percentage": 0.004314696319610434
+ },
+ {
+ "rx_pps": 7575174.0,
+ "rx_pkts": 75285867,
+ "time_ms": 1650848863217,
+ "drop_pct": 0,
+ "total_tx_pps": 7528586,
+ "tx_pps": 7575174,
+ "tx_pkts": 75285867,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 7582920.0,
+ "rx_pkts": 75370436,
+ "time_ms": 1650848875725,
+ "drop_pct": 0,
+ "total_tx_pps": 7537043,
+ "tx_pps": 7582920,
+ "tx_pkts": 75370436,
+ "ndr_pps": 3791460,
+ "drop_percentage": 0.0
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 10000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "18d99ccb52d7454da33eba941f8a8819"
+ },
+ "synthesis": {
+ "avg_delay_usec": 47.499673147704755,
+ "total_tx_rate": 7537043
+ }
+ },
+ {
+ "input": {
+ "rate": "ndr",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1024-fc_10k-rate_ndr-2.json",
+ "frame_sizes": [
+ "1024"
+ ],
+ "duration_sec": "10",
+ "flow_count": "10k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc18_loopback"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-04-25 01:17:35",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:07.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "EXT",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn1ter",
+ "name": "net_nfvbench_vn1ter",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1",
+ "name": "net_nfvbench_vn1",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": true,
+ "request_id": "f980c04f3b844edebf749e967b297a62",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "1024"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 10000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1024-fc_10k-rate_ndr-2.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": true,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "1024"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2505,
+ 2505
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc18_loopback",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "flavor_nfvbench_dpdk",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1024-fc_10k-rate_ndr-2.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "EXT": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "1024": {
+ "ndr": {
+ "load_percent_per_direction": 95.8984375,
+ "timestamp_sec": 1650849598.2220418,
+ "stats": {
+ "total_tx_rate": 5706312,
+ "overall": {
+ "rx_pkts": 57062671,
+ "drop_percentage": 0.0007973625559875567,
+ "drop_pct": 455,
+ "max_delay_usec": 96,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 57063126,
+ "avg_delay_usec": 51.4996825858362,
+ "min_delay_usec": 9,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 28530128,
+ "min_delay_usec": 9,
+ "drop_pct": 0,
+ "max_delay_usec": 96,
+ "tx_pkts": 28532998,
+ "avg_delay_usec": 59,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 28532543,
+ "min_delay_usec": 11,
+ "drop_pct": 455,
+ "max_delay_usec": 89,
+ "tx_pkts": 28530128,
+ "avg_delay_usec": 44,
+ "drop_percentage": 0.0015948053229904893
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 47659117824.0,
+ "theoretical_tx_rate_pps": 5986590.038314176
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 191.796875,
+ "duration_sec": 10.0,
+ "l2frame_size": "1024",
+ "rate_pps": 5741046,
+ "rate_bps": 47949218750.0,
+ "time_taken_sec": 137.68057537078857
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 5905784.604263414,
+ "rx_pkts": 57472018,
+ "time_ms": 1650849473030,
+ "drop_pct": 786356,
+ "total_tx_pps": 5825837,
+ "tx_pps": 5986590,
+ "tx_pkts": 58258374,
+ "drop_percentage": 1.3497733390224727
+ },
+ {
+ "rx_pps": 2993294.0,
+ "rx_pkts": 29748857,
+ "time_ms": 1650849485555,
+ "drop_pct": 0,
+ "total_tx_pps": 2974885,
+ "tx_pps": 2993294,
+ "tx_pkts": 29748857,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 4489942.0,
+ "rx_pkts": 44627778,
+ "time_ms": 1650849498054,
+ "drop_pct": 0,
+ "total_tx_pps": 4462777,
+ "tx_pps": 4489942,
+ "tx_pkts": 44627778,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 5238266.0,
+ "rx_pkts": 52065746,
+ "time_ms": 1650849510553,
+ "drop_pct": 0,
+ "total_tx_pps": 5206574,
+ "tx_pps": 5238266,
+ "tx_pkts": 52065746,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 5612428.0,
+ "rx_pkts": 55779111,
+ "time_ms": 1650849523054,
+ "drop_pct": 0,
+ "total_tx_pps": 5577911,
+ "tx_pps": 5612428,
+ "tx_pkts": 55779111,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 5751042.570625828,
+ "rx_pkts": 57271760,
+ "time_ms": 1650849535577,
+ "drop_pct": 482643,
+ "total_tx_pps": 5775440,
+ "tx_pps": 5799508,
+ "tx_pkts": 57754403,
+ "drop_percentage": 0.8356817401436909
+ },
+ {
+ "rx_pps": 5705968.0,
+ "rx_pkts": 56708762,
+ "time_ms": 1650849548099,
+ "drop_pct": 0,
+ "total_tx_pps": 5670876,
+ "tx_pps": 5705968,
+ "tx_pkts": 56708762,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 5750684.6723701265,
+ "rx_pkts": 57153189,
+ "time_ms": 1650849560600,
+ "drop_pct": 20407,
+ "total_tx_pps": 5717359,
+ "tx_pps": 5752738,
+ "tx_pkts": 57173596,
+ "drop_percentage": 0.03569304963780833
+ },
+ {
+ "rx_pps": 5729352.0,
+ "rx_pkts": 56941171,
+ "time_ms": 1650849573113,
+ "drop_pct": 0,
+ "total_tx_pps": 5694117,
+ "tx_pps": 5729352,
+ "tx_pkts": 56941171,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 5741000.223048874,
+ "rx_pkts": 57062671,
+ "time_ms": 1650849585617,
+ "drop_pct": 455,
+ "total_tx_pps": 5706312,
+ "tx_pps": 5741046,
+ "tx_pkts": 57063126,
+ "drop_percentage": 0.0007973625559875567
+ },
+ {
+ "rx_pps": 5746113.109782579,
+ "rx_pkts": 57107742,
+ "time_ms": 1650849598221,
+ "drop_pct": 7741,
+ "total_tx_pps": 5711548,
+ "tx_pps": 5746892,
+ "tx_pkts": 57115483,
+ "ndr_pps": 2870523,
+ "drop_percentage": 0.013553242647006943
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 10000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "f980c04f3b844edebf749e967b297a62"
+ },
+ "synthesis": {
+ "avg_delay_usec": 51.4996825858362,
+ "total_tx_rate": 5706312
+ }
+ },
+ {
+ "input": {
+ "rate": "ndr",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1280-fc_10k-rate_ndr-2.json",
+ "frame_sizes": [
+ "1280"
+ ],
+ "duration_sec": "10",
+ "flow_count": "10k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc18_loopback"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-04-25 01:20:00",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:07.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "EXT",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn1ter",
+ "name": "net_nfvbench_vn1ter",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1",
+ "name": "net_nfvbench_vn1",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": true,
+ "request_id": "a5da318377744c288afee82b6e83d7f4",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "1280"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 10000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1280-fc_10k-rate_ndr-0.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": true,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "1280"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2505,
+ 2505
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc18_loopback",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "flavor_nfvbench_dpdk",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1280-fc_10k-rate_ndr-0.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "EXT": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "1280": {
+ "ndr": {
+ "load_percent_per_direction": 96.09375,
+ "timestamp_sec": 1650849742.814171,
+ "stats": {
+ "total_tx_rate": 4591478,
+ "overall": {
+ "rx_pkts": 45914783,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 113,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 45914783,
+ "avg_delay_usec": 76.0,
+ "min_delay_usec": 7,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 22956236,
+ "min_delay_usec": 7,
+ "drop_pct": 0,
+ "max_delay_usec": 113,
+ "tx_pkts": 22958547,
+ "avg_delay_usec": 76,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 22958547,
+ "min_delay_usec": 7,
+ "drop_pct": 0,
+ "max_delay_usec": 103,
+ "tx_pkts": 22956236,
+ "avg_delay_usec": 76,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 47751371200.0,
+ "theoretical_tx_rate_pps": 4807692.307692308
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 192.1875,
+ "duration_sec": 10.0,
+ "l2frame_size": "1280",
+ "rate_pps": 4619890,
+ "rate_bps": 48046875000.0,
+ "time_taken_sec": 137.75093936920166
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 4726682.774538362,
+ "rx_pkts": 46236280,
+ "time_ms": 1650849617552,
+ "drop_pct": 792430,
+ "total_tx_pps": 4702871,
+ "tx_pps": 4807692,
+ "tx_pkts": 47028710,
+ "drop_percentage": 1.6849919974415628
+ },
+ {
+ "rx_pps": 2403846.0,
+ "rx_pkts": 23888220,
+ "time_ms": 1650849630057,
+ "drop_pct": 0,
+ "total_tx_pps": 2388822,
+ "tx_pps": 2403846,
+ "tx_pkts": 23888220,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 3605768.0,
+ "rx_pkts": 35835928,
+ "time_ms": 1650849642637,
+ "drop_pct": 0,
+ "total_tx_pps": 3583592,
+ "tx_pps": 3605768,
+ "tx_pkts": 35835928,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 4206730.0,
+ "rx_pkts": 41808587,
+ "time_ms": 1650849655220,
+ "drop_pct": 0,
+ "total_tx_pps": 4180858,
+ "tx_pps": 4206730,
+ "tx_pkts": 41808587,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 4507210.0,
+ "rx_pkts": 44794909,
+ "time_ms": 1650849667733,
+ "drop_pct": 0,
+ "total_tx_pps": 4479490,
+ "tx_pps": 4507210,
+ "tx_pkts": 44794909,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 4626492.009806026,
+ "rx_pkts": 45980393,
+ "time_ms": 1650849680242,
+ "drop_pct": 307676,
+ "total_tx_pps": 4628806,
+ "tx_pps": 4657450,
+ "tx_pkts": 46288069,
+ "drop_percentage": 0.6646982832660399
+ },
+ {
+ "rx_pps": 4582330.0,
+ "rx_pkts": 45541488,
+ "time_ms": 1650849692745,
+ "drop_pct": 0,
+ "total_tx_pps": 4554148,
+ "tx_pps": 4582330,
+ "tx_pkts": 45541488,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 4619890.0,
+ "rx_pkts": 45914783,
+ "time_ms": 1650849705269,
+ "drop_pct": 0,
+ "total_tx_pps": 4591478,
+ "tx_pps": 4619890,
+ "tx_pkts": 45914783,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 4626391.745988317,
+ "rx_pkts": 46071925,
+ "time_ms": 1650849717790,
+ "drop_pct": 122273,
+ "total_tx_pps": 4619419,
+ "tx_pps": 4638670,
+ "tx_pkts": 46194198,
+ "drop_percentage": 0.2646934145279457
+ },
+ {
+ "rx_pps": 4626440.83932869,
+ "rx_pkts": 45979885,
+ "time_ms": 1650849730293,
+ "drop_pct": 28217,
+ "total_tx_pps": 4600810,
+ "tx_pps": 4629280,
+ "tx_pkts": 46008102,
+ "drop_percentage": 0.06133050217981172
+ },
+ {
+ "rx_pps": 4624386.070437684,
+ "rx_pkts": 45959462,
+ "time_ms": 1650849742813,
+ "drop_pct": 1987,
+ "total_tx_pps": 4596144,
+ "tx_pps": 4624586,
+ "tx_pkts": 45961449,
+ "ndr_pps": 2309945,
+ "drop_percentage": 0.004323188331159881
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 10000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "a5da318377744c288afee82b6e83d7f4"
+ },
+ "synthesis": {
+ "avg_delay_usec": 76.0,
+ "total_tx_rate": 4591478
+ }
+ },
+ {
+ "input": {
+ "rate": "ndr",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1518-fc_10k-rate_ndr-2.json",
+ "frame_sizes": [
+ "1518"
+ ],
+ "duration_sec": "10",
+ "flow_count": "10k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc18_loopback"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-04-25 01:32:02",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:07.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "EXT",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn1ter",
+ "name": "net_nfvbench_vn1ter",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1",
+ "name": "net_nfvbench_vn1",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": true,
+ "request_id": "2a0a188162394858b0f91a93a609e85b",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "1518"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 10000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1518-fc_10k-rate_ndr-2.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": true,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "1518"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2505,
+ 2505
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc18_loopback",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "flavor_nfvbench_dpdk",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1518-fc_10k-rate_ndr-2.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "EXT": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "1518": {
+ "ndr": {
+ "load_percent_per_direction": 95.99609375,
+ "timestamp_sec": 1650850465.3741472,
+ "stats": {
+ "total_tx_rate": 3877019,
+ "overall": {
+ "rx_pkts": 38770196,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 139,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 38770196,
+ "avg_delay_usec": 99.4996727383065,
+ "min_delay_usec": 8,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 19384122,
+ "min_delay_usec": 8,
+ "drop_pct": 0,
+ "max_delay_usec": 139,
+ "tx_pkts": 19386074,
+ "avg_delay_usec": 106,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 19386074,
+ "min_delay_usec": 12,
+ "drop_pct": 0,
+ "max_delay_usec": 139,
+ "tx_pkts": 19384122,
+ "avg_delay_usec": 93,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 47702841776.0,
+ "theoretical_tx_rate_pps": 4063719.1157347206
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 191.9921875,
+ "duration_sec": 10.0,
+ "l2frame_size": "1518",
+ "rate_pps": 3901010,
+ "rate_bps": 47998046874.0,
+ "time_taken_sec": 137.7311794757843
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 3982204.741901213,
+ "rx_pkts": 39030251,
+ "time_ms": 1650850340162,
+ "drop_pct": 798925,
+ "total_tx_pps": 3982917,
+ "tx_pps": 4063718,
+ "tx_pkts": 39829176,
+ "drop_percentage": 2.0058788060290276
+ },
+ {
+ "rx_pps": 2031858.0,
+ "rx_pkts": 20193624,
+ "time_ms": 1650850352678,
+ "drop_pct": 0,
+ "total_tx_pps": 2019362,
+ "tx_pps": 2031858,
+ "tx_pkts": 20193624,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 3047788.0,
+ "rx_pkts": 30308733,
+ "time_ms": 1650850365187,
+ "drop_pct": 0,
+ "total_tx_pps": 3030873,
+ "tx_pps": 3047788,
+ "tx_pkts": 30308733,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 3555754.0,
+ "rx_pkts": 35342421,
+ "time_ms": 1650850377693,
+ "drop_pct": 0,
+ "total_tx_pps": 3534242,
+ "tx_pps": 3555754,
+ "tx_pkts": 35342421,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 3809736.0,
+ "rx_pkts": 37863066,
+ "time_ms": 1650850390212,
+ "drop_pct": 0,
+ "total_tx_pps": 3786306,
+ "tx_pps": 3809736,
+ "tx_pkts": 37863066,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 3905550.3906702464,
+ "rx_pkts": 38819222,
+ "time_ms": 1650850402727,
+ "drop_pct": 309870,
+ "total_tx_pps": 3912909,
+ "tx_pps": 3936726,
+ "tx_pkts": 39129092,
+ "drop_percentage": 0.7919171750778168
+ },
+ {
+ "rx_pps": 3873232.0,
+ "rx_pkts": 38494120,
+ "time_ms": 1650850415300,
+ "drop_pct": 0,
+ "total_tx_pps": 3849412,
+ "tx_pps": 3873232,
+ "tx_pkts": 38494120,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 3904613.0432372405,
+ "rx_pkts": 38805999,
+ "time_ms": 1650850427820,
+ "drop_pct": 3647,
+ "total_tx_pps": 3880964,
+ "tx_pps": 3904980,
+ "tx_pkts": 38809646,
+ "drop_percentage": 0.009397148327506002
+ },
+ {
+ "rx_pps": 3889106.0,
+ "rx_pkts": 38799675,
+ "time_ms": 1650850440360,
+ "drop_pct": 0,
+ "total_tx_pps": 3879967,
+ "tx_pps": 3889106,
+ "tx_pkts": 38799675,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 3897042.0,
+ "rx_pkts": 38734654,
+ "time_ms": 1650850452876,
+ "drop_pct": 0,
+ "total_tx_pps": 3873465,
+ "tx_pps": 3897042,
+ "tx_pkts": 38734654,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 3901010.0,
+ "rx_pkts": 38770196,
+ "time_ms": 1650850465373,
+ "drop_pct": 0,
+ "total_tx_pps": 3877019,
+ "tx_pps": 3901010,
+ "tx_pkts": 38770196,
+ "ndr_pps": 1950505,
+ "drop_percentage": 0.0
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 10000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "2a0a188162394858b0f91a93a609e85b"
+ },
+ "synthesis": {
+ "avg_delay_usec": 99.4996727383065,
+ "total_tx_rate": 3877019
+ }
+ },
+ {
+ "input": {
+ "rate": "ndr",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_IMIX-fc_10k-rate_ndr-2.json",
+ "frame_sizes": [
+ "IMIX"
+ ],
+ "duration_sec": "10",
+ "flow_count": "10k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc18_loopback"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-04-25 01:34:45",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:07.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "EXT",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn1ter",
+ "name": "net_nfvbench_vn1ter",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1",
+ "name": "net_nfvbench_vn1",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": true,
+ "request_id": "0983ac3addf84a478e6da408b3e21aca",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "IMIX"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 10000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_IMIX-fc_10k-rate_ndr-1.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": true,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "IMIX"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2505,
+ 2505
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc18_loopback",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "flavor_nfvbench_dpdk",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_IMIX-fc_10k-rate_ndr-1.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "EXT": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "warning": "WARNING: There is a significant difference between requested TX rate (16368398) and actual TX rate (14122958). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "IMIX": {
+ "ndr": {
+ "load_percent_per_direction": 100.0,
+ "timestamp_sec": 1650850502.7712622,
+ "stats": {
+ "total_tx_rate": 14122958,
+ "overall": {
+ "rx_pkts": 141229588,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 628,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 141229588,
+ "avg_delay_usec": 356.54005520429615,
+ "min_delay_usec": 20,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 70668670,
+ "min_delay_usec": 21,
+ "drop_pct": 0,
+ "max_delay_usec": 628,
+ "tx_pkts": 70560918,
+ "avg_delay_usec": 409,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 70560918,
+ "min_delay_usec": 20,
+ "drop_pct": 0,
+ "max_delay_usec": 603,
+ "tx_pkts": 70668670,
+ "avg_delay_usec": 304,
+ "drop_percentage": 0.0
+ },
+ "warning": "WARNING: There is a significant difference between requested TX rate (16368398) and actual TX rate (14122958). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 43140929037.33333,
+ "theoretical_tx_rate_pps": 16368398.079441292
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 200.0,
+ "duration_sec": 10.0,
+ "l2frame_size": "IMIX",
+ "rate_pps": 16368398,
+ "rate_bps": 50000000000.0,
+ "time_taken_sec": 12.55201530456543
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 16368398.0,
+ "rx_pkts": 141229588,
+ "time_ms": 1650850502770,
+ "drop_pct": 0,
+ "total_tx_pps": 14122958,
+ "tx_pps": 16368398,
+ "tx_pkts": 141229588,
+ "ndr_pps": 8184199,
+ "warning": "WARNING: There is a significant difference between requested TX rate (16368398) and actual TX rate (14122958). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "drop_percentage": 0.0
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 10000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "0983ac3addf84a478e6da408b3e21aca"
+ },
+ "synthesis": {
+ "avg_delay_usec": 356.54005520429615,
+ "total_tx_rate": 14122958
+ }
+ },
+ {
+ "input": {
+ "rate": "ndr",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_9000-fc_10k-rate_ndr-2.json",
+ "frame_sizes": [
+ "9000"
+ ],
+ "duration_sec": "10",
+ "flow_count": "10k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc18_loopback"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-04-25 01:37:47",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:07.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "EXT",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn1ter",
+ "name": "net_nfvbench_vn1ter",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1",
+ "name": "net_nfvbench_vn1",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": true,
+ "request_id": "debc5ad324ad481e9f7d2fcdbc47cb30",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "9000"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 10000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_9000-fc_10k-rate_ndr-1.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": true,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "9000"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2505,
+ 2505
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc18_loopback",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "flavor_nfvbench_dpdk",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_9000-fc_10k-rate_ndr-1.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "EXT": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "9000": {
+ "ndr": {
+ "load_percent_per_direction": 96.09375,
+ "timestamp_sec": 1650850810.5278695,
+ "stats": {
+ "total_tx_rate": 661743,
+ "overall": {
+ "rx_pkts": 6617433,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 566,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 6617433,
+ "avg_delay_usec": 490.9992497090639,
+ "min_delay_usec": 15,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 3308551,
+ "min_delay_usec": 15,
+ "drop_pct": 0,
+ "max_delay_usec": 566,
+ "tx_pkts": 3308882,
+ "avg_delay_usec": 506,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 3308882,
+ "min_delay_usec": 15,
+ "drop_pct": 0,
+ "max_delay_usec": 529,
+ "tx_pkts": 3308551,
+ "avg_delay_usec": 476,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 47751374880.0,
+ "theoretical_tx_rate_pps": 692904.6563192905
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 192.1875,
+ "duration_sec": 10.0,
+ "l2frame_size": "9000",
+ "rate_pps": 665838,
+ "rate_bps": 48046875000.0,
+ "time_taken_sec": 137.66692209243774
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 668814.8286232857,
+ "rx_pkts": 6651341,
+ "time_ms": 1650850685349,
+ "drop_pct": 239566,
+ "total_tx_pps": 689090,
+ "tx_pps": 692904,
+ "tx_pkts": 6890907,
+ "drop_percentage": 3.476552506077937
+ },
+ {
+ "rx_pps": 346452.0,
+ "rx_pkts": 3443214,
+ "time_ms": 1650850697851,
+ "drop_pct": 0,
+ "total_tx_pps": 344321,
+ "tx_pps": 346452,
+ "tx_pkts": 3443214,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 519678.0,
+ "rx_pkts": 5164821,
+ "time_ms": 1650850710355,
+ "drop_pct": 0,
+ "total_tx_pps": 516482,
+ "tx_pps": 519678,
+ "tx_pkts": 5164821,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 606290.0,
+ "rx_pkts": 6025614,
+ "time_ms": 1650850722872,
+ "drop_pct": 0,
+ "total_tx_pps": 602561,
+ "tx_pps": 606290,
+ "tx_pkts": 6025614,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 649598.0,
+ "rx_pkts": 6467074,
+ "time_ms": 1650850735425,
+ "drop_pct": 0,
+ "total_tx_pps": 646707,
+ "tx_pps": 649598,
+ "tx_pkts": 6467074,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 665952.2491003298,
+ "rx_pkts": 6619233,
+ "time_ms": 1650850747925,
+ "drop_pct": 52657,
+ "total_tx_pps": 667189,
+ "tx_pps": 671250,
+ "tx_pkts": 6671890,
+ "drop_percentage": 0.7892366330979678
+ },
+ {
+ "rx_pps": 660424.0,
+ "rx_pkts": 6563625,
+ "time_ms": 1650850760442,
+ "drop_pct": 0,
+ "total_tx_pps": 656362,
+ "tx_pps": 660424,
+ "tx_pkts": 6563625,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 665838.0,
+ "rx_pkts": 6617433,
+ "time_ms": 1650850772948,
+ "drop_pct": 0,
+ "total_tx_pps": 661743,
+ "tx_pps": 665838,
+ "tx_pkts": 6617433,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 665963.3876473027,
+ "rx_pkts": 6619344,
+ "time_ms": 1650850785467,
+ "drop_pct": 25650,
+ "total_tx_pps": 664499,
+ "tx_pps": 668544,
+ "tx_pkts": 6644994,
+ "drop_percentage": 0.38600486320980876
+ },
+ {
+ "rx_pps": 665953.6202723441,
+ "rx_pkts": 6619248,
+ "time_ms": 1650850797979,
+ "drop_pct": 12289,
+ "total_tx_pps": 663153,
+ "tx_pps": 667190,
+ "tx_pkts": 6631537,
+ "drop_percentage": 0.18531148962902566
+ },
+ {
+ "rx_pps": 665952.2454294527,
+ "rx_pkts": 6618569,
+ "time_ms": 1650850810527,
+ "drop_pct": 5583,
+ "total_tx_pps": 662415,
+ "tx_pps": 666514,
+ "tx_pkts": 6624152,
+ "ndr_pps": 332919,
+ "drop_percentage": 0.0842824862714503
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 10000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "debc5ad324ad481e9f7d2fcdbc47cb30"
+ },
+ "synthesis": {
+ "avg_delay_usec": 490.9992497090639,
+ "total_tx_rate": 661743
+ }
+ },
+ {
+ "input": {
+ "rate": "ndr",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_64-fc_100k-rate_ndr-2.json",
+ "frame_sizes": [
+ "64"
+ ],
+ "duration_sec": "10",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc18_loopback"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-04-25 01:43:17",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:07.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "EXT",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn1ter",
+ "name": "net_nfvbench_vn1ter",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1",
+ "name": "net_nfvbench_vn1",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": true,
+ "request_id": "014622aafb2c426ab9df378f15c06fef",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "64"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_64-fc_100k-rate_ndr-2.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": true,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "64"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2505,
+ 2505
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc18_loopback",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "flavor_nfvbench_dpdk",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_64-fc_100k-rate_ndr-2.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "EXT": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "warning": "WARNING: There is a significant difference between requested TX rate (74404760) and actual TX rate (16765582). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "64": {
+ "ndr": {
+ "load_percent_per_direction": 100.0,
+ "timestamp_sec": 1650851015.0206628,
+ "stats": {
+ "total_tx_rate": 16765582,
+ "overall": {
+ "rx_pkts": 167655827,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 104,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 167655827,
+ "avg_delay_usec": 24.993023892930367,
+ "min_delay_usec": 5,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 83944872,
+ "min_delay_usec": 6,
+ "drop_pct": 0,
+ "max_delay_usec": 103,
+ "tx_pkts": 83710955,
+ "avg_delay_usec": 20,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 83710955,
+ "min_delay_usec": 5,
+ "drop_pct": 0,
+ "max_delay_usec": 104,
+ "tx_pkts": 83944872,
+ "avg_delay_usec": 30,
+ "drop_percentage": 0.0
+ },
+ "warning": "WARNING: There is a significant difference between requested TX rate (74404760) and actual TX rate (16765582). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 11266471104.0,
+ "theoretical_tx_rate_pps": 74404761.90476191
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 200.0,
+ "duration_sec": 10.0,
+ "l2frame_size": "64",
+ "rate_pps": 74404760,
+ "rate_bps": 50000000000.0,
+ "time_taken_sec": 12.508348226547241
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 74404760.0,
+ "rx_pkts": 167655827,
+ "time_ms": 1650851015020,
+ "drop_pct": 0,
+ "total_tx_pps": 16765582,
+ "tx_pps": 74404760,
+ "tx_pkts": 167655827,
+ "ndr_pps": 37202380,
+ "warning": "WARNING: There is a significant difference between requested TX rate (74404760) and actual TX rate (16765582). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "drop_percentage": 0.0
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "014622aafb2c426ab9df378f15c06fef"
+ },
+ "synthesis": {
+ "avg_delay_usec": 24.993023892930367,
+ "total_tx_rate": 16765582
+ }
+ },
+ {
+ "input": {
+ "rate": "ndr",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_128-fc_100k-rate_ndr-2.json",
+ "frame_sizes": [
+ "128"
+ ],
+ "duration_sec": "10",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc18_loopback"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-04-25 01:44:17",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:07.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "EXT",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn1ter",
+ "name": "net_nfvbench_vn1ter",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1",
+ "name": "net_nfvbench_vn1",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": true,
+ "request_id": "a2341c441c5140a784a4749e86d5c19e",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "128"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_128-fc_100k-rate_ndr-2.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": true,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "128"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2505,
+ 2505
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc18_loopback",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "flavor_nfvbench_dpdk",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_128-fc_100k-rate_ndr-2.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "EXT": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "128": {
+ "ndr": {
+ "load_percent_per_direction": 100.0,
+ "timestamp_sec": 1650851075.266194,
+ "stats": {
+ "total_tx_rate": 18075556,
+ "overall": {
+ "rx_pkts": 180755561,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 61,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 180755561,
+ "avg_delay_usec": 20.503517144902666,
+ "min_delay_usec": 5,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 90468601,
+ "min_delay_usec": 6,
+ "drop_pct": 0,
+ "max_delay_usec": 61,
+ "tx_pkts": 90286960,
+ "avg_delay_usec": 24,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 90286960,
+ "min_delay_usec": 5,
+ "drop_pct": 0,
+ "max_delay_usec": 55,
+ "tx_pkts": 90468601,
+ "avg_delay_usec": 17,
+ "drop_percentage": 0.0
+ },
+ "warning": "WARNING: There is a significant difference between requested TX rate (42229728) and actual TX rate (18075556). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 21401458304.0,
+ "theoretical_tx_rate_pps": 42229729.72972973
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 200.0,
+ "duration_sec": 10.0,
+ "l2frame_size": "128",
+ "rate_pps": 42229728,
+ "rate_bps": 50000000000.0,
+ "time_taken_sec": 12.509921312332153
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 42229728.0,
+ "rx_pkts": 180755561,
+ "time_ms": 1650851075265,
+ "drop_pct": 0,
+ "total_tx_pps": 18075556,
+ "tx_pps": 42229728,
+ "tx_pkts": 180755561,
+ "ndr_pps": 21114864,
+ "warning": "WARNING: There is a significant difference between requested TX rate (42229728) and actual TX rate (18075556). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "drop_percentage": 0.0
+ }
+ ]
+ }
+ },
+ "warning": "WARNING: There is a significant difference between requested TX rate (42229728) and actual TX rate (18075556). The traffic generator may not have sufficient CPU to achieve the requested TX rate."
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "a2341c441c5140a784a4749e86d5c19e"
+ },
+ "synthesis": {
+ "avg_delay_usec": 20.503517144902666,
+ "total_tx_rate": 18075556
+ }
+ },
+ {
+ "input": {
+ "rate": "ndr",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_256-fc_100k-rate_ndr-2.json",
+ "frame_sizes": [
+ "256"
+ ],
+ "duration_sec": "10",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc18_loopback"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-04-25 01:45:17",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:07.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "EXT",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn1ter",
+ "name": "net_nfvbench_vn1ter",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1",
+ "name": "net_nfvbench_vn1",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": true,
+ "request_id": "81e85c0a6b464632850a5e5c7117f2b9",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "256"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_256-fc_100k-rate_ndr-2.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": true,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "256"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2505,
+ 2505
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc18_loopback",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "flavor_nfvbench_dpdk",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_256-fc_100k-rate_ndr-2.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "EXT": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "warning": "WARNING: There is a significant difference between requested TX rate (22644926) and actual TX rate (15904019). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "256": {
+ "ndr": {
+ "load_percent_per_direction": 100.0,
+ "timestamp_sec": 1650851135.4937232,
+ "stats": {
+ "total_tx_rate": 15904019,
+ "overall": {
+ "rx_pkts": 159040190,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 48,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 159040190,
+ "avg_delay_usec": 24.49913906667239,
+ "min_delay_usec": 6,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 79565736,
+ "min_delay_usec": 7,
+ "drop_pct": 0,
+ "max_delay_usec": 48,
+ "tx_pkts": 79474454,
+ "avg_delay_usec": 23,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 79474454,
+ "min_delay_usec": 6,
+ "drop_pct": 0,
+ "max_delay_usec": 44,
+ "tx_pkts": 79565736,
+ "avg_delay_usec": 26,
+ "drop_percentage": 0.0
+ },
+ "warning": "WARNING: There is a significant difference between requested TX rate (22644926) and actual TX rate (15904019). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 35116073952.0,
+ "theoretical_tx_rate_pps": 22644927.536231883
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 200.0,
+ "duration_sec": 10.0,
+ "l2frame_size": "256",
+ "rate_pps": 22644926,
+ "rate_bps": 50000000000.0,
+ "time_taken_sec": 12.490444898605347
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 22644926.0,
+ "rx_pkts": 159040190,
+ "time_ms": 1650851135493,
+ "drop_pct": 0,
+ "total_tx_pps": 15904019,
+ "tx_pps": 22644926,
+ "tx_pkts": 159040190,
+ "ndr_pps": 11322463,
+ "warning": "WARNING: There is a significant difference between requested TX rate (22644926) and actual TX rate (15904019). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "drop_percentage": 0.0
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "81e85c0a6b464632850a5e5c7117f2b9"
+ },
+ "synthesis": {
+ "avg_delay_usec": 24.49913906667239,
+ "total_tx_rate": 15904019
+ }
+ },
+ {
+ "input": {
+ "rate": "ndr",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_512-fc_100k-rate_ndr-2.json",
+ "frame_sizes": [
+ "512"
+ ],
+ "duration_sec": "10",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc18_loopback"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-04-25 01:45:37",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:07.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "EXT",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn1ter",
+ "name": "net_nfvbench_vn1ter",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1",
+ "name": "net_nfvbench_vn1",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": true,
+ "request_id": "d11915d33a9248cdbc7f6b1fe526c0bc",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "512"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_512-fc_100k-rate_ndr-0.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": true,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "512"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2505,
+ 2505
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc18_loopback",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "flavor_nfvbench_dpdk",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_512-fc_100k-rate_ndr-0.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "EXT": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "512": {
+ "ndr": {
+ "load_percent_per_direction": 100.0,
+ "timestamp_sec": 1650851155.6128447,
+ "stats": {
+ "total_tx_rate": 11083895,
+ "overall": {
+ "rx_pkts": 110838959,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 751,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 110838959,
+ "avg_delay_usec": 244.54752861762262,
+ "min_delay_usec": 22,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 55446495,
+ "min_delay_usec": 24,
+ "drop_pct": 0,
+ "max_delay_usec": 751,
+ "tx_pkts": 55392464,
+ "avg_delay_usec": 342,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 55392464,
+ "min_delay_usec": 22,
+ "drop_pct": 0,
+ "max_delay_usec": 604,
+ "tx_pkts": 55446495,
+ "avg_delay_usec": 147,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 47173057120.0,
+ "theoretical_tx_rate_pps": 11748120.30075188
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 200.0,
+ "duration_sec": 10.0,
+ "l2frame_size": "512",
+ "rate_pps": 11748120,
+ "rate_bps": 50000000000.0,
+ "time_taken_sec": 12.493241786956787
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 11748120.0,
+ "rx_pkts": 110838959,
+ "time_ms": 1650851155612,
+ "drop_pct": 0,
+ "total_tx_pps": 11083895,
+ "tx_pps": 11748120,
+ "tx_pkts": 110838959,
+ "ndr_pps": 5874060,
+ "drop_percentage": 0.0
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "d11915d33a9248cdbc7f6b1fe526c0bc"
+ },
+ "synthesis": {
+ "avg_delay_usec": 244.54752861762262,
+ "total_tx_rate": 11083895
+ }
+ },
+ {
+ "input": {
+ "rate": "ndr",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_768-fc_100k-rate_ndr-2.json",
+ "frame_sizes": [
+ "768"
+ ],
+ "duration_sec": "10",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc18_loopback"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-04-25 01:50:46",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:07.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "EXT",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn1ter",
+ "name": "net_nfvbench_vn1ter",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1",
+ "name": "net_nfvbench_vn1",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": true,
+ "request_id": "3dfdb6dff0ef4590ae98f24d2b98b4a7",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "768"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_768-fc_100k-rate_ndr-0.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": true,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "768"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2505,
+ 2505
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc18_loopback",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "flavor_nfvbench_dpdk",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_768-fc_100k-rate_ndr-0.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "EXT": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "768": {
+ "ndr": {
+ "load_percent_per_direction": 95.60546875,
+ "timestamp_sec": 1650851589.8598213,
+ "stats": {
+ "total_tx_rate": 7536285,
+ "overall": {
+ "rx_pkts": 75362853,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 85,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 75362853,
+ "avg_delay_usec": 48.99969802098654,
+ "min_delay_usec": 11,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 37679530,
+ "min_delay_usec": 11,
+ "drop_pct": 0,
+ "max_delay_usec": 85,
+ "tx_pkts": 37683323,
+ "avg_delay_usec": 55,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 37683323,
+ "min_delay_usec": 13,
+ "drop_pct": 0,
+ "max_delay_usec": 81,
+ "tx_pkts": 37679530,
+ "avg_delay_usec": 43,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 47508740640.0,
+ "theoretical_tx_rate_pps": 7931472.081218274
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 191.2109375,
+ "duration_sec": 10.0,
+ "l2frame_size": "768",
+ "rate_pps": 7582920,
+ "rate_bps": 47802734374.0,
+ "time_taken_sec": 137.68758368492126
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 7867019.991496668,
+ "rx_pkts": 75782125,
+ "time_ms": 1650851464683,
+ "drop_pct": 620859,
+ "total_tx_pps": 7640298,
+ "tx_pps": 7931472,
+ "tx_pkts": 76402984,
+ "drop_percentage": 0.8126109315311559
+ },
+ {
+ "rx_pps": 3965736.0,
+ "rx_pkts": 39413476,
+ "time_ms": 1650851477177,
+ "drop_pct": 0,
+ "total_tx_pps": 3941347,
+ "tx_pps": 3965736,
+ "tx_pkts": 39413476,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 5948604.0,
+ "rx_pkts": 59120203,
+ "time_ms": 1650851489700,
+ "drop_pct": 0,
+ "total_tx_pps": 5912020,
+ "tx_pps": 5948604,
+ "tx_pkts": 59120203,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 6940038.0,
+ "rx_pkts": 68973557,
+ "time_ms": 1650851502199,
+ "drop_pct": 0,
+ "total_tx_pps": 6897355,
+ "tx_pps": 6940038,
+ "tx_pkts": 68973557,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 7435754.0,
+ "rx_pkts": 73900239,
+ "time_ms": 1650851514716,
+ "drop_pct": 0,
+ "total_tx_pps": 7390023,
+ "tx_pps": 7435754,
+ "tx_pkts": 73900239,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 7620954.625306049,
+ "rx_pkts": 75507656,
+ "time_ms": 1650851527233,
+ "drop_pct": 620803,
+ "total_tx_pps": 7612845,
+ "tx_pps": 7683612,
+ "tx_pkts": 76128459,
+ "drop_percentage": 0.8154677083375614
+ },
+ {
+ "rx_pps": 7559684.0,
+ "rx_pkts": 75131929,
+ "time_ms": 1650851539732,
+ "drop_pct": 0,
+ "total_tx_pps": 7513192,
+ "tx_pps": 7559684,
+ "tx_pkts": 75131929,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 7596741.430266551,
+ "rx_pkts": 75500232,
+ "time_ms": 1650851552229,
+ "drop_pct": 247534,
+ "total_tx_pps": 7574776,
+ "tx_pps": 7621648,
+ "tx_pkts": 75747766,
+ "drop_percentage": 0.3267871952817724
+ },
+ {
+ "rx_pps": 7590337.479512263,
+ "rx_pkts": 75436549,
+ "time_ms": 1650851564806,
+ "drop_pct": 3265,
+ "total_tx_pps": 7543981,
+ "tx_pps": 7590666,
+ "tx_pkts": 75439814,
+ "drop_percentage": 0.004327953406671973
+ },
+ {
+ "rx_pps": 7575174.0,
+ "rx_pkts": 75285893,
+ "time_ms": 1650851577332,
+ "drop_pct": 0,
+ "total_tx_pps": 7528589,
+ "tx_pps": 7575174,
+ "tx_pkts": 75285893,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 7582920.0,
+ "rx_pkts": 75362853,
+ "time_ms": 1650851589858,
+ "drop_pct": 0,
+ "total_tx_pps": 7536285,
+ "tx_pps": 7582920,
+ "tx_pkts": 75362853,
+ "ndr_pps": 3791460,
+ "drop_percentage": 0.0
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "3dfdb6dff0ef4590ae98f24d2b98b4a7"
+ },
+ "synthesis": {
+ "avg_delay_usec": 48.99969802098654,
+ "total_tx_rate": 7536285
+ }
+ },
+ {
+ "input": {
+ "rate": "ndr",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1024-fc_100k-rate_ndr-2.json",
+ "frame_sizes": [
+ "1024"
+ ],
+ "duration_sec": "10",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc18_loopback"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-04-25 02:02:49",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:07.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "EXT",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn1ter",
+ "name": "net_nfvbench_vn1ter",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1",
+ "name": "net_nfvbench_vn1",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": true,
+ "request_id": "df31248f2daf41788e5aeb35599600ec",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "1024"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1024-fc_100k-rate_ndr-2.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": true,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "1024"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2505,
+ 2505
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc18_loopback",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "flavor_nfvbench_dpdk",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1024-fc_100k-rate_ndr-2.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "EXT": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "1024": {
+ "ndr": {
+ "load_percent_per_direction": 95.8984375,
+ "timestamp_sec": 1650852312.436391,
+ "stats": {
+ "total_tx_rate": 5706025,
+ "overall": {
+ "rx_pkts": 57060256,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 100,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 57060256,
+ "avg_delay_usec": 49.50055346754841,
+ "min_delay_usec": 9,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 28527257,
+ "min_delay_usec": 9,
+ "drop_pct": 0,
+ "max_delay_usec": 96,
+ "tx_pkts": 28532999,
+ "avg_delay_usec": 44,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 28532999,
+ "min_delay_usec": 10,
+ "drop_pct": 0,
+ "max_delay_usec": 100,
+ "tx_pkts": 28527257,
+ "avg_delay_usec": 55,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 47656720800.0,
+ "theoretical_tx_rate_pps": 5986590.038314176
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 191.796875,
+ "duration_sec": 10.0,
+ "l2frame_size": "1024",
+ "rate_pps": 5741046,
+ "rate_bps": 47949218750.0,
+ "time_taken_sec": 137.73684573173523
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 5905630.69286569,
+ "rx_pkts": 57462293,
+ "time_ms": 1650852187211,
+ "drop_pct": 787741,
+ "total_tx_pps": 5825003,
+ "tx_pps": 5986590,
+ "tx_pkts": 58250034,
+ "drop_percentage": 1.3523442750265176
+ },
+ {
+ "rx_pps": 2993294.0,
+ "rx_pkts": 29748852,
+ "time_ms": 1650852199712,
+ "drop_pct": 0,
+ "total_tx_pps": 2974885,
+ "tx_pps": 2993294,
+ "tx_pkts": 29748852,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 4489942.0,
+ "rx_pkts": 44623288,
+ "time_ms": 1650852212213,
+ "drop_pct": 0,
+ "total_tx_pps": 4462328,
+ "tx_pps": 4489942,
+ "tx_pkts": 44623288,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 5238266.0,
+ "rx_pkts": 52060508,
+ "time_ms": 1650852224756,
+ "drop_pct": 0,
+ "total_tx_pps": 5206050,
+ "tx_pps": 5238266,
+ "tx_pkts": 52060508,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 5612428.0,
+ "rx_pkts": 55779125,
+ "time_ms": 1650852237260,
+ "drop_pct": 0,
+ "total_tx_pps": 5577912,
+ "tx_pps": 5612428,
+ "tx_pkts": 55779125,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 5751065.368412055,
+ "rx_pkts": 57156952,
+ "time_ms": 1650852249774,
+ "drop_pct": 481447,
+ "total_tx_pps": 5763839,
+ "tx_pps": 5799508,
+ "tx_pkts": 57638399,
+ "drop_percentage": 0.8352886415183045
+ },
+ {
+ "rx_pps": 5705968.0,
+ "rx_pkts": 56868528,
+ "time_ms": 1650852262305,
+ "drop_pct": 0,
+ "total_tx_pps": 5686852,
+ "tx_pps": 5705968,
+ "tx_pkts": 56868528,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 5750731.258995378,
+ "rx_pkts": 57159387,
+ "time_ms": 1650852274851,
+ "drop_pct": 19946,
+ "total_tx_pps": 5717933,
+ "tx_pps": 5752738,
+ "tx_pkts": 57179333,
+ "drop_percentage": 0.034883233073040566
+ },
+ {
+ "rx_pps": 5729352.0,
+ "rx_pkts": 56941156,
+ "time_ms": 1650852287414,
+ "drop_pct": 0,
+ "total_tx_pps": 5694115,
+ "tx_pps": 5729352,
+ "tx_pkts": 56941156,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 5741046.0,
+ "rx_pkts": 57060256,
+ "time_ms": 1650852299929,
+ "drop_pct": 0,
+ "total_tx_pps": 5706025,
+ "tx_pps": 5741046,
+ "tx_pkts": 57060256,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 5745777.043226499,
+ "rx_pkts": 57104416,
+ "time_ms": 1650852312435,
+ "drop_pct": 11081,
+ "total_tx_pps": 5711549,
+ "tx_pps": 5746892,
+ "tx_pkts": 57115497,
+ "ndr_pps": 2870523,
+ "drop_percentage": 0.019401039266103207
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "df31248f2daf41788e5aeb35599600ec"
+ },
+ "synthesis": {
+ "avg_delay_usec": 49.50055346754841,
+ "total_tx_rate": 5706025
+ }
+ },
+ {
+ "input": {
+ "rate": "ndr",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1280-fc_100k-rate_ndr-2.json",
+ "frame_sizes": [
+ "1280"
+ ],
+ "duration_sec": "10",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc18_loopback"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-04-25 02:05:13",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:07.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "EXT",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn1ter",
+ "name": "net_nfvbench_vn1ter",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1",
+ "name": "net_nfvbench_vn1",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": true,
+ "request_id": "3483e5ac90f647c18792824df335576f",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "1280"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1280-fc_100k-rate_ndr-0.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": true,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "1280"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2505,
+ 2505
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc18_loopback",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "flavor_nfvbench_dpdk",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1280-fc_100k-rate_ndr-0.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "EXT": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "1280": {
+ "ndr": {
+ "load_percent_per_direction": 96.09375,
+ "timestamp_sec": 1650852456.8429823,
+ "stats": {
+ "total_tx_rate": 4591477,
+ "overall": {
+ "rx_pkts": 45914773,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 115,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 45914773,
+ "avg_delay_usec": 72.0000503323843,
+ "min_delay_usec": 8,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 22956231,
+ "min_delay_usec": 8,
+ "drop_pct": 0,
+ "max_delay_usec": 113,
+ "tx_pkts": 22958542,
+ "avg_delay_usec": 71,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 22958542,
+ "min_delay_usec": 8,
+ "drop_pct": 0,
+ "max_delay_usec": 115,
+ "tx_pkts": 22956231,
+ "avg_delay_usec": 73,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 47751360800.0,
+ "theoretical_tx_rate_pps": 4807692.307692308
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 192.1875,
+ "duration_sec": 10.0,
+ "l2frame_size": "1280",
+ "rate_pps": 4619890,
+ "rate_bps": 48046875000.0,
+ "time_taken_sec": 137.65410780906677
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 4726559.564871196,
+ "rx_pkts": 46152394,
+ "time_ms": 1650852331691,
+ "drop_pct": 792216,
+ "total_tx_pps": 4694461,
+ "tx_pps": 4807692,
+ "tx_pkts": 46944610,
+ "drop_percentage": 1.6875547586826263
+ },
+ {
+ "rx_pps": 2403846.0,
+ "rx_pkts": 23888223,
+ "time_ms": 1650852344191,
+ "drop_pct": 0,
+ "total_tx_pps": 2388822,
+ "tx_pps": 2403846,
+ "tx_pkts": 23888223,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 3605768.0,
+ "rx_pkts": 35835922,
+ "time_ms": 1650852356692,
+ "drop_pct": 0,
+ "total_tx_pps": 3583592,
+ "tx_pps": 3605768,
+ "tx_pkts": 35835922,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 4206730.0,
+ "rx_pkts": 41808587,
+ "time_ms": 1650852369206,
+ "drop_pct": 0,
+ "total_tx_pps": 4180858,
+ "tx_pps": 4206730,
+ "tx_pkts": 41808587,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 4507210.0,
+ "rx_pkts": 44794900,
+ "time_ms": 1650852381776,
+ "drop_pct": 0,
+ "total_tx_pps": 4479490,
+ "tx_pps": 4507210,
+ "tx_pkts": 44794900,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 4626532.86170713,
+ "rx_pkts": 45980800,
+ "time_ms": 1650852394280,
+ "drop_pct": 307270,
+ "total_tx_pps": 4628807,
+ "tx_pps": 4657450,
+ "tx_pkts": 46288070,
+ "drop_percentage": 0.6638211530530437
+ },
+ {
+ "rx_pps": 4582330.0,
+ "rx_pkts": 45541498,
+ "time_ms": 1650852406785,
+ "drop_pct": 0,
+ "total_tx_pps": 4554149,
+ "tx_pps": 4582330,
+ "tx_pkts": 45541498,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 4619890.0,
+ "rx_pkts": 45914773,
+ "time_ms": 1650852419279,
+ "drop_pct": 0,
+ "total_tx_pps": 4591477,
+ "tx_pps": 4619890,
+ "tx_pkts": 45914773,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 4626430.527562457,
+ "rx_pkts": 45979781,
+ "time_ms": 1650852431782,
+ "drop_pct": 121642,
+ "total_tx_pps": 4610142,
+ "tx_pps": 4638670,
+ "tx_pkts": 46101423,
+ "drop_percentage": 0.26385736509695157
+ },
+ {
+ "rx_pps": 4626442.952323484,
+ "rx_pkts": 45979906,
+ "time_ms": 1650852444306,
+ "drop_pct": 28196,
+ "total_tx_pps": 4600810,
+ "tx_pps": 4629280,
+ "tx_pkts": 46008102,
+ "drop_percentage": 0.06128485804521995
+ },
+ {
+ "rx_pps": 4624386.291771492,
+ "rx_pkts": 45964089,
+ "time_ms": 1650852456842,
+ "drop_pct": 1985,
+ "total_tx_pps": 4596607,
+ "tx_pps": 4624586,
+ "tx_pkts": 45966074,
+ "ndr_pps": 2309945,
+ "drop_percentage": 0.004318402306883986
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "3483e5ac90f647c18792824df335576f"
+ },
+ "synthesis": {
+ "avg_delay_usec": 72.0000503323843,
+ "total_tx_rate": 4591477
+ }
+ },
+ {
+ "input": {
+ "rate": "ndr",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1518-fc_100k-rate_ndr-2.json",
+ "frame_sizes": [
+ "1518"
+ ],
+ "duration_sec": "10",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc18_loopback"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-04-25 02:17:16",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:07.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "EXT",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn1ter",
+ "name": "net_nfvbench_vn1ter",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1",
+ "name": "net_nfvbench_vn1",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": true,
+ "request_id": "e5fdb1f38f334e048d5a301c6045cc2d",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "1518"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1518-fc_100k-rate_ndr-2.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": true,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "1518"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2505,
+ 2505
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc18_loopback",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "flavor_nfvbench_dpdk",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1518-fc_100k-rate_ndr-2.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "EXT": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "1518": {
+ "ndr": {
+ "load_percent_per_direction": 95.99609375,
+ "timestamp_sec": 1650853179.382297,
+ "stats": {
+ "total_tx_rate": 3877019,
+ "overall": {
+ "rx_pkts": 38769903,
+ "drop_percentage": 0.0007557351528478215,
+ "drop_pct": 293,
+ "max_delay_usec": 150,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 38770196,
+ "avg_delay_usec": 94.9999144181506,
+ "min_delay_usec": 7,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 19384122,
+ "min_delay_usec": 7,
+ "drop_pct": 0,
+ "max_delay_usec": 150,
+ "tx_pkts": 19386074,
+ "avg_delay_usec": 97,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 19385781,
+ "min_delay_usec": 11,
+ "drop_pct": 293,
+ "max_delay_usec": 136,
+ "tx_pkts": 19384122,
+ "avg_delay_usec": 93,
+ "drop_percentage": 0.0015115464089629645
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 47702841776.0,
+ "theoretical_tx_rate_pps": 4063719.1157347206
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 191.9921875,
+ "duration_sec": 10.0,
+ "l2frame_size": "1518",
+ "rate_pps": 3901010,
+ "rate_bps": 47998046874.0,
+ "time_taken_sec": 137.64107275009155
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 3982055.7006684523,
+ "rx_pkts": 38963118,
+ "time_ms": 1650853054249,
+ "drop_pct": 799039,
+ "total_tx_pps": 3976215,
+ "tx_pps": 4063718,
+ "tx_pkts": 39762157,
+ "drop_percentage": 2.009546413691792
+ },
+ {
+ "rx_pps": 2031858.0,
+ "rx_pkts": 20191592,
+ "time_ms": 1650853066752,
+ "drop_pct": 0,
+ "total_tx_pps": 2019159,
+ "tx_pps": 2031858,
+ "tx_pkts": 20191592,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 3047788.0,
+ "rx_pkts": 30290447,
+ "time_ms": 1650853079251,
+ "drop_pct": 0,
+ "total_tx_pps": 3029044,
+ "tx_pps": 3047788,
+ "tx_pkts": 30290447,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 3555754.0,
+ "rx_pkts": 35338864,
+ "time_ms": 1650853091784,
+ "drop_pct": 0,
+ "total_tx_pps": 3533886,
+ "tx_pps": 3555754,
+ "tx_pkts": 35338864,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 3809736.0,
+ "rx_pkts": 37863067,
+ "time_ms": 1650853104288,
+ "drop_pct": 0,
+ "total_tx_pps": 3786306,
+ "tx_pps": 3809736,
+ "tx_pkts": 37863067,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 3905544.608185896,
+ "rx_pkts": 38817602,
+ "time_ms": 1650853116791,
+ "drop_pct": 309915,
+ "total_tx_pps": 3912751,
+ "tx_pps": 3936726,
+ "tx_pkts": 39127517,
+ "drop_percentage": 0.7920640606967214
+ },
+ {
+ "rx_pps": 3873232.0,
+ "rx_pkts": 38563838,
+ "time_ms": 1650853129321,
+ "drop_pct": 0,
+ "total_tx_pps": 3856383,
+ "tx_pps": 3873232,
+ "tx_pkts": 38563838,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 3904454.7698652036,
+ "rx_pkts": 38804426,
+ "time_ms": 1650853141834,
+ "drop_pct": 5220,
+ "total_tx_pps": 3880964,
+ "tx_pps": 3904980,
+ "tx_pkts": 38809646,
+ "drop_percentage": 0.013450264400762635
+ },
+ {
+ "rx_pps": 3889106.0,
+ "rx_pkts": 38651888,
+ "time_ms": 1650853154337,
+ "drop_pct": 0,
+ "total_tx_pps": 3865188,
+ "tx_pps": 3889106,
+ "tx_pkts": 38651888,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 3897042.0,
+ "rx_pkts": 38732706,
+ "time_ms": 1650853166869,
+ "drop_pct": 0,
+ "total_tx_pps": 3873270,
+ "tx_pps": 3897042,
+ "tx_pkts": 38732706,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 3900980.518696114,
+ "rx_pkts": 38769903,
+ "time_ms": 1650853179381,
+ "drop_pct": 293,
+ "total_tx_pps": 3877019,
+ "tx_pps": 3901010,
+ "tx_pkts": 38770196,
+ "ndr_pps": 1950505,
+ "drop_percentage": 0.0007557351528478215
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "e5fdb1f38f334e048d5a301c6045cc2d"
+ },
+ "synthesis": {
+ "avg_delay_usec": 94.9999144181506,
+ "total_tx_rate": 3877019
+ }
+ },
+ {
+ "input": {
+ "rate": "ndr",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_IMIX-fc_100k-rate_ndr-2.json",
+ "frame_sizes": [
+ "IMIX"
+ ],
+ "duration_sec": "10",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc18_loopback"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-04-25 02:20:20",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:07.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "EXT",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn1ter",
+ "name": "net_nfvbench_vn1ter",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1",
+ "name": "net_nfvbench_vn1",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": true,
+ "request_id": "4b1b0ab83b55448bb34da88ed0446e02",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "IMIX"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_IMIX-fc_100k-rate_ndr-2.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": true,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "IMIX"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2505,
+ 2505
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc18_loopback",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "flavor_nfvbench_dpdk",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_IMIX-fc_100k-rate_ndr-2.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "EXT": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "warning": "WARNING: There is a significant difference between requested TX rate (16368398) and actual TX rate (14094667). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "IMIX": {
+ "ndr": {
+ "load_percent_per_direction": 100.0,
+ "timestamp_sec": 1650853238.9316306,
+ "stats": {
+ "total_tx_rate": 14094667,
+ "overall": {
+ "rx_pkts": 140946676,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 629,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 140946676,
+ "avg_delay_usec": 330.48077658816163,
+ "min_delay_usec": 13,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 70508526,
+ "min_delay_usec": 14,
+ "drop_pct": 0,
+ "max_delay_usec": 629,
+ "tx_pkts": 70438150,
+ "avg_delay_usec": 292,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 70438150,
+ "min_delay_usec": 13,
+ "drop_pct": 0,
+ "max_delay_usec": 558,
+ "tx_pkts": 70508526,
+ "avg_delay_usec": 369,
+ "drop_percentage": 0.0
+ },
+ "warning": "WARNING: There is a significant difference between requested TX rate (16368398) and actual TX rate (14094667). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 43054509462.666664,
+ "theoretical_tx_rate_pps": 16368398.079441292
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 200.0,
+ "duration_sec": 10.0,
+ "l2frame_size": "IMIX",
+ "rate_pps": 16368398,
+ "rate_bps": 50000000000.0,
+ "time_taken_sec": 12.508249044418335
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 16368398.0,
+ "rx_pkts": 140946676,
+ "time_ms": 1650853238931,
+ "drop_pct": 0,
+ "total_tx_pps": 14094667,
+ "tx_pps": 16368398,
+ "tx_pkts": 140946676,
+ "ndr_pps": 8184199,
+ "warning": "WARNING: There is a significant difference between requested TX rate (16368398) and actual TX rate (14094667). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "drop_percentage": 0.0
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "4b1b0ab83b55448bb34da88ed0446e02"
+ },
+ "synthesis": {
+ "avg_delay_usec": 330.48077658816163,
+ "total_tx_rate": 14094667
+ }
+ },
+ {
+ "input": {
+ "rate": "ndr",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_9000-fc_100k-rate_ndr-2.json",
+ "frame_sizes": [
+ "9000"
+ ],
+ "duration_sec": "10",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc18_loopback"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-04-25 02:25:30",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:07.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "EXT",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn1ter",
+ "name": "net_nfvbench_vn1ter",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1",
+ "name": "net_nfvbench_vn1",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": true,
+ "request_id": "37942b1f63cd4ab8a26e5fc2f6ace237",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "9000"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_9000-fc_100k-rate_ndr-2.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": true,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "9000"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2505,
+ 2505
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc18_loopback",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "flavor_nfvbench_dpdk",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_9000-fc_100k-rate_ndr-2.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "EXT": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "9000": {
+ "ndr": {
+ "load_percent_per_direction": 95.99609375,
+ "timestamp_sec": 1650853673.125213,
+ "stats": {
+ "total_tx_rate": 661136,
+ "overall": {
+ "rx_pkts": 6611360,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 538,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 6611360,
+ "avg_delay_usec": 477.99959584714793,
+ "min_delay_usec": 15,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 3305513,
+ "min_delay_usec": 15,
+ "drop_pct": 0,
+ "max_delay_usec": 538,
+ "tx_pkts": 3305847,
+ "avg_delay_usec": 486,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 3305847,
+ "min_delay_usec": 15,
+ "drop_pct": 0,
+ "max_delay_usec": 524,
+ "tx_pkts": 3305513,
+ "avg_delay_usec": 470,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 47707573760.0,
+ "theoretical_tx_rate_pps": 692904.6563192905
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 191.9921875,
+ "duration_sec": 10.0,
+ "l2frame_size": "9000",
+ "rate_pps": 665160,
+ "rate_bps": 47998046874.0,
+ "time_taken_sec": 137.65885472297668
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 668428.2262058704,
+ "rx_pkts": 6638764,
+ "time_ms": 1650853547957,
+ "drop_pct": 243091,
+ "total_tx_pps": 688185,
+ "tx_pps": 692904,
+ "tx_pkts": 6881855,
+ "drop_percentage": 3.532347019807886
+ },
+ {
+ "rx_pps": 346452.0,
+ "rx_pkts": 3443493,
+ "time_ms": 1650853560502,
+ "drop_pct": 0,
+ "total_tx_pps": 344349,
+ "tx_pps": 346452,
+ "tx_pkts": 3443493,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 519678.0,
+ "rx_pkts": 5165340,
+ "time_ms": 1650853573032,
+ "drop_pct": 0,
+ "total_tx_pps": 516534,
+ "tx_pps": 519678,
+ "tx_pkts": 5165340,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 606290.0,
+ "rx_pkts": 6025616,
+ "time_ms": 1650853585552,
+ "drop_pct": 0,
+ "total_tx_pps": 602561,
+ "tx_pps": 606290,
+ "tx_pkts": 6025616,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 649598.0,
+ "rx_pkts": 6456032,
+ "time_ms": 1650853598052,
+ "drop_pct": 0,
+ "total_tx_pps": 645603,
+ "tx_pps": 649598,
+ "tx_pkts": 6456032,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 665605.0071570089,
+ "rx_pkts": 6618445,
+ "time_ms": 1650853610556,
+ "drop_pct": 56131,
+ "total_tx_pps": 667457,
+ "tx_pps": 671250,
+ "tx_pkts": 6674576,
+ "drop_percentage": 0.8409672764232514
+ },
+ {
+ "rx_pps": 660424.0,
+ "rx_pkts": 6563625,
+ "time_ms": 1650853623059,
+ "drop_pct": 0,
+ "total_tx_pps": 656362,
+ "tx_pps": 660424,
+ "tx_pkts": 6563625,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 665581.9509880405,
+ "rx_pkts": 6615554,
+ "time_ms": 1650853635567,
+ "drop_pct": 2545,
+ "total_tx_pps": 661809,
+ "tx_pps": 665838,
+ "tx_pkts": 6618099,
+ "drop_percentage": 0.03845515154729477
+ },
+ {
+ "rx_pps": 663130.0,
+ "rx_pkts": 6590519,
+ "time_ms": 1650853648084,
+ "drop_pct": 0,
+ "total_tx_pps": 659051,
+ "tx_pps": 663130,
+ "tx_pkts": 6590519,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 664484.0,
+ "rx_pkts": 6604641,
+ "time_ms": 1650853660605,
+ "drop_pct": 0,
+ "total_tx_pps": 660464,
+ "tx_pps": 664484,
+ "tx_pkts": 6604641,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 665160.0,
+ "rx_pkts": 6611360,
+ "time_ms": 1650853673124,
+ "drop_pct": 0,
+ "total_tx_pps": 661136,
+ "tx_pps": 665160,
+ "tx_pkts": 6611360,
+ "ndr_pps": 332580,
+ "drop_percentage": 0.0
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "37942b1f63cd4ab8a26e5fc2f6ace237"
+ },
+ "synthesis": {
+ "avg_delay_usec": 477.99959584714793,
+ "total_tx_rate": 661136
+ }
+ }
+ ]
+ },
+ "fail_tests": 0,
+ "total_tests": 1,
+ "pass_tests": 1
+ }
+ },
+ {
+ "project_name": "nfvbench",
+ "scenario": "basic",
+ "stop_date": "2022-03-29 04:00:23",
+ "case_name": "characterization",
+ "build_tag": "I2DSIKVWY5C8",
+ "version": "unknown",
+ "pod_name": "AMICAL",
+ "criteria": "PASS",
+ "installer": "unknown",
+ "_id": "62428459c0d88e001ca15662",
+ "start_date": "2022-03-29 00:16:03",
+ "details": {
+ "tests": [
+ {
+ "status": "passed",
+ "elements": [
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.1 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.0001163482666015625,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "64 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "64"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 0.00010013580322265625,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "128 flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "128"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.560585021972656e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.655952453613281e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 5.030165672302246,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 441.4675030708313,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00012564659118652344,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0002872943878173828,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:17",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.2 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.942054748535156e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "128 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "128"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 0.00011372566223144531,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "128 flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "128"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.465217590332031e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.202957153320312e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.00823521614074707,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 433.396630525589,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.000118255615234375,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0002837181091308594,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:18",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.3 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.894371032714844e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "256 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "256"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.584426879882812e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "128 flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "128"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.226799011230469e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 0.00010609626770019531,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007856607437133789,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 433.39697003364563,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.000118255615234375,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.00032806396484375,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:19",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.4 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010061264038085938,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "512 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "512"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.560585021972656e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "128 flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "128"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.417533874511719e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.489059448242188e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007916927337646484,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 433.39968848228455,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.0001201629638671875,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0003211498260498047,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:20",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.5 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010061264038085938,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "768 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "768"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.250640869140625e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "128 flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "128"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.250640869140625e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.417533874511719e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007905721664428711,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 433.40395522117615,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00011658668518066406,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.00028514862060546875,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:21",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.6 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.942054748535156e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "1024 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "1024"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.441375732421875e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "128 flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "128"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 0.00011348724365234375,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.107589721679688e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007941484451293945,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 433.4135231971741,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00011992454528808594,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0003170967102050781,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:22",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.7 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.775161743164062e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "1280 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "1280"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.465217590332031e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "128 flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "128"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.274482727050781e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.5367431640625e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007906198501586914,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 433.40963220596313,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.0001239776611328125,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.00029730796813964844,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:23",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.8 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.0001232624053955078,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "1518 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "1518"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.72747802734375e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "128 flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "128"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.298324584960938e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 8.988380432128906e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007907390594482422,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 433.4113304615021,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00012087821960449219,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.00028133392333984375,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:24",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.9 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.822845458984375e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "IMIX frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "IMIX"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 0.00011849403381347656,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "128 flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "128"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.298324584960938e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.179115295410156e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.008216381072998047,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 433.4068977832794,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00012040138244628906,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.00032019615173339844,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:25",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.10 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.0001010894775390625,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "9000 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "9000"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.465217590332031e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "128 flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "128"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.226799011230469e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.5367431640625e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007925271987915039,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 433.404554605484,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00011920928955078125,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0003101825714111328,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:26",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.11 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.965896606445312e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "64 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "64"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.560585021972656e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "10k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "10k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.5367431640625e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.965896606445312e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007976293563842773,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 439.5729796886444,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00011754035949707031,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.00028586387634277344,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:27",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.12 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.584426879882812e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "128 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "128"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.441375732421875e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "10k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "10k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.5367431640625e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.202957153320312e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.008101701736450195,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 439.4532768726349,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00011944770812988281,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.00033020973205566406,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:28",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.13 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.775161743164062e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "256 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "256"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.393692016601562e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "10k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "10k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.393692016601562e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.274482727050781e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007899761199951172,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 439.41574001312256,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00011801719665527344,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0003037452697753906,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:29",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.14 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.775161743164062e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "512 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "512"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.417533874511719e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "10k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "10k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.226799011230469e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.34600830078125e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.008031368255615234,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 439.4325096607208,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00011944770812988281,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.00031256675720214844,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:30",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.15 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.870529174804688e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "768 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "768"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.560585021972656e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "10k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "10k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.322166442871094e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.512901306152344e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007970094680786133,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 439.82969641685486,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00012087821960449219,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.00031185150146484375,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:31",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.16 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.775161743164062e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "1024 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "1024"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.655952453613281e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "10k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "10k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 0.00011396408081054688,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.274482727050781e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.008100748062133789,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 439.4229202270508,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.0001201629638671875,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0002961158752441406,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:32",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.17 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.655952453613281e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "1280 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "1280"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.560585021972656e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "10k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "10k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.369850158691406e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.393692016601562e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.008043766021728516,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 439.42792868614197,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00011777877807617188,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0003020763397216797,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:33",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.18 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.942054748535156e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "1518 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "1518"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.34600830078125e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "10k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "10k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.202957153320312e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 0.0001125335693359375,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.00787210464477539,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 443.48774886131287,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00011992454528808594,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0003151893615722656,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:34",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.19 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.894371032714844e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "IMIX frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "IMIX"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.489059448242188e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "10k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "10k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.417533874511719e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.441375732421875e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.008165359497070312,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 439.4371497631073,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00012183189392089844,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0002982616424560547,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:35",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.20 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00011897087097167969,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "9000 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "9000"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.679794311523438e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "10k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "10k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.441375732421875e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.34600830078125e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007880926132202148,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 439.4218900203705,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00012063980102539062,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.00030922889709472656,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:36",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.21 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.846687316894531e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "64 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "64"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.584426879882812e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.322166442871094e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.274482727050781e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.008101463317871094,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 439.5446517467499,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00011968612670898438,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0002968311309814453,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:37",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.22 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.846687316894531e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "128 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "128"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.489059448242188e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 0.00011539459228515625,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.226799011230469e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007904767990112305,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 443.58557987213135,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.000118255615234375,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.00030350685119628906,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:38",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.23 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.799003601074219e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "256 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "256"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.417533874511719e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.274482727050781e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.512901306152344e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.008047819137573242,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 439.51229333877563,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00011873245239257812,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0002970695495605469,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:39",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.24 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.965896606445312e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "512 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "512"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.584426879882812e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.465217590332031e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 0.00011205673217773438,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.008028507232666016,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 439.4921851158142,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00012063980102539062,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0002834796905517578,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:40",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.25 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.679794311523438e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "768 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "768"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 0.00011658668518066406,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.369850158691406e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.250640869140625e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007831335067749023,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 439.44814562797546,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.000118255615234375,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0002892017364501953,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:41",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.26 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010085105895996094,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "1024 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "1024"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 0.00010704994201660156,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.322166442871094e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 0.00011205673217773438,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.008156299591064453,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 439.425315618515,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00012135505676269531,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0002989768981933594,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:42",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.27 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00011754035949707031,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "1280 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "1280"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.703636169433594e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.369850158691406e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 0.00010848045349121094,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.008181095123291016,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 439.497309923172,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.000118255615234375,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0002830028533935547,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:43",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.28 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.560585021972656e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "1518 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "1518"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.608268737792969e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.417533874511719e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.1552734375e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.008019685745239258,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 439.43971967697144,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00012063980102539062,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0002837181091308594,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:44",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.29 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010013580322265625,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "IMIX frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "IMIX"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.560585021972656e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.393692016601562e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.822845458984375e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.008020877838134766,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 439.46456599235535,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00011920928955078125,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.000316619873046875,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:45",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.30 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010132789611816406,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "9000 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "9000"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.465217590332031e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.298324584960938e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 0.00011324882507324219,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007940530776977539,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 439.47153663635254,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00011730194091796875,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.00028133392333984375,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:46",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a latency test for a defined frame size and throughput percentage -- @1.1 Frame sizes and throughput percentages",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "latency"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:51",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010395050048828125,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "TRex is restarted",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:52",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:99"
+ },
+ "result": {
+ "duration": 0.00010609626770019531,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "64 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:53",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "64"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.5367431640625e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:54",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.179115295410156e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "70% rate of previous scenario",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:55",
+ "match": {
+ "arguments": [
+ {
+ "name": "percentage_rate",
+ "value": "70%"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:129"
+ },
+ "result": {
+ "duration": 0.00024056434631347656,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:56",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007750511169433594,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "run is started and waiting for result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:57",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 40.1791934967041,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:58",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00011968612670898438,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:62",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a latency test for a defined frame size and throughput percentage -- @1.2 Frame sizes and throughput percentages",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "latency"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:51",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.72747802734375e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "TRex is restarted",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:52",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:99"
+ },
+ "result": {
+ "duration": 0.00011229515075683594,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "64 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:53",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "64"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.560585021972656e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:54",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.298324584960938e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "90% rate of previous scenario",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:55",
+ "match": {
+ "arguments": [
+ {
+ "name": "percentage_rate",
+ "value": "90%"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:129"
+ },
+ "result": {
+ "duration": 0.0002522468566894531,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:56",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.008098125457763672,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "run is started and waiting for result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:57",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 40.174768686294556,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:58",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00012159347534179688,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:63",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a latency test for a defined frame size and throughput percentage -- @1.3 Frame sizes and throughput percentages",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "latency"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:51",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010180473327636719,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "TRex is restarted",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:52",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:99"
+ },
+ "result": {
+ "duration": 9.250640869140625e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "768 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:53",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "768"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.489059448242188e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:54",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 0.0001163482666015625,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "70% rate of previous scenario",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:55",
+ "match": {
+ "arguments": [
+ {
+ "name": "percentage_rate",
+ "value": "70%"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:129"
+ },
+ "result": {
+ "duration": 0.00023174285888671875,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:56",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.008144855499267578,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "run is started and waiting for result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:57",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 38.25333619117737,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:58",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00012159347534179688,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:64",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a latency test for a defined frame size and throughput percentage -- @1.4 Frame sizes and throughput percentages",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "latency"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:51",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010204315185546875,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "TRex is restarted",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:52",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:99"
+ },
+ "result": {
+ "duration": 9.489059448242188e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "768 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:53",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "768"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.560585021972656e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:54",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 0.0001163482666015625,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "90% rate of previous scenario",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:55",
+ "match": {
+ "arguments": [
+ {
+ "name": "percentage_rate",
+ "value": "90%"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:129"
+ },
+ "result": {
+ "duration": 0.0002396106719970703,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:56",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.008252859115600586,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "run is started and waiting for result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:57",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 38.2523250579834,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:58",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00013947486877441406,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:65",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a latency test for a defined frame size and throughput percentage -- @1.5 Frame sizes and throughput percentages",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "latency"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:51",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010085105895996094,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "TRex is restarted",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:52",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:99"
+ },
+ "result": {
+ "duration": 9.107589721679688e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "1518 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:53",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "1518"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 0.00010061264038085938,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:54",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 0.00010085105895996094,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "70% rate of previous scenario",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:55",
+ "match": {
+ "arguments": [
+ {
+ "name": "percentage_rate",
+ "value": "70%"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:129"
+ },
+ "result": {
+ "duration": 0.00022912025451660156,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:56",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.00817418098449707,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "run is started and waiting for result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:57",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 40.25585341453552,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:58",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.0001220703125,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:66",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a latency test for a defined frame size and throughput percentage -- @1.6 Frame sizes and throughput percentages",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "latency"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:51",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.942054748535156e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "TRex is restarted",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:52",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:99"
+ },
+ "result": {
+ "duration": 0.00010895729064941406,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "1518 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:53",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "1518"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.512901306152344e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:54",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.322166442871094e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "90% rate of previous scenario",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:55",
+ "match": {
+ "arguments": [
+ {
+ "name": "percentage_rate",
+ "value": "90%"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:129"
+ },
+ "result": {
+ "duration": 0.0002522468566894531,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:56",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.008129119873046875,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "run is started and waiting for result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:57",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 38.25064826011658,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:58",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00012230873107910156,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:67",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a latency test for a defined frame size and throughput percentage -- @1.7 Frame sizes and throughput percentages",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "latency"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:51",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.918212890625e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "TRex is restarted",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:52",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:99"
+ },
+ "result": {
+ "duration": 9.655952453613281e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "9000 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:53",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "9000"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.5367431640625e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:54",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.465217590332031e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "70% rate of previous scenario",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:55",
+ "match": {
+ "arguments": [
+ {
+ "name": "percentage_rate",
+ "value": "70%"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:129"
+ },
+ "result": {
+ "duration": 0.00023627281188964844,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:56",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.008117198944091797,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "run is started and waiting for result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:57",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 40.175238370895386,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:58",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00011992454528808594,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:68",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a latency test for a defined frame size and throughput percentage -- @1.8 Frame sizes and throughput percentages",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "latency"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:51",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.846687316894531e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "TRex is restarted",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:52",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:99"
+ },
+ "result": {
+ "duration": 0.00011420249938964844,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "9000 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:53",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "9000"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.489059448242188e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:54",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.179115295410156e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "90% rate of previous scenario",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:55",
+ "match": {
+ "arguments": [
+ {
+ "name": "percentage_rate",
+ "value": "90%"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:129"
+ },
+ "result": {
+ "duration": 0.0002562999725341797,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:56",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.00825643539428711,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "run is started and waiting for result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:57",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 38.24060845375061,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:58",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00012087821960449219,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:69",
+ "type": "scenario"
+ }
+ ],
+ "name": "characterization",
+ "keyword": "Feature",
+ "tags": [
+ "characterization"
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:2"
+ }
+ ],
+ "skip_tests": 0,
+ "links": [
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/xtesting.log",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_768-fc_100k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_128-fc_128-rate_ndr-0.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_1518-fc_100k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_512-fc_100k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_64-fc_128-rate_ndr-2.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_9000-fc_10k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_1280-fc_100k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_1024-fc_128-rate_ndr-0.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_64-fc_128-rate_ndr-1.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_64-fc_10k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_768-fc_10k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_128-fc_128-rate_ndr-2.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_IMIX-fc_10k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_256-fc_10k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_9000-fc_100k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/output.html",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_1024-fc_128-rate_ndr-1.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_512-fc_128-rate_ndr-1.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_256-fc_100k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_256-fc_128-rate_ndr-2.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_1024-fc_100k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_128-fc_10k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_9000-fc_100k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_64-fc_100k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-latency-fs_64-fc_100k-rate_70%.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_1280-fc_128-rate_ndr-2.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_256-fc_100k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_512-fc_10k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_768-fc_10k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_768-fc_128-rate_ndr-0.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_512-fc_100k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_IMIX-fc_100k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_64-fc_100k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_1024-fc_100k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_1280-fc_100k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_128-fc_128-rate_ndr-1.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_128-fc_100k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_9000-fc_128-rate_ndr-0.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_9000-fc_128-rate_ndr-1.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_IMIX-fc_128-rate_ndr-1.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_768-fc_10k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_1280-fc_10k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_IMIX-fc_100k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_IMIX-fc_128-rate_ndr-2.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_IMIX-fc_10k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_1518-fc_100k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/behave_tests.log",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_128-fc_10k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-latency-fs_9000-fc_100k-rate_70%.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_512-fc_128-rate_ndr-0.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_9000-fc_128-rate_ndr-2.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_768-fc_100k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/campaign_result.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_9000-fc_10k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_512-fc_10k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_256-fc_10k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_128-fc_100k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-latency-fs_768-fc_100k-rate_90%.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_IMIX-fc_128-rate_ndr-0.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_1280-fc_100k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_64-fc_100k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_1518-fc_128-rate_ndr-0.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/TESTS-characterization-full.xml",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-latency-fs_1518-fc_100k-rate_90%.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_1518-fc_10k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_9000-fc_100k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_256-fc_10k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_64-fc_128-rate_ndr-0.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_1024-fc_128-rate_ndr-2.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_1518-fc_100k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_9000-fc_10k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_1024-fc_10k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_1024-fc_100k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_256-fc_100k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_IMIX-fc_10k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_512-fc_100k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_1024-fc_10k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_1280-fc_128-rate_ndr-0.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_1280-fc_128-rate_ndr-1.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_768-fc_128-rate_ndr-2.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_512-fc_10k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_1518-fc_10k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_768-fc_100k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-latency-fs_64-fc_100k-rate_90%.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_256-fc_128-rate_ndr-0.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_1518-fc_128-rate_ndr-1.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-latency-fs_768-fc_100k-rate_70%.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_256-fc_128-rate_ndr-1.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench.log",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_1518-fc_128-rate_ndr-2.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_64-fc_10k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-latency-fs_9000-fc_100k-rate_90%.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_IMIX-fc_100k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_1518-fc_10k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_1280-fc_10k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_512-fc_128-rate_ndr-2.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_128-fc_10k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_768-fc_128-rate_ndr-1.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-latency-fs_1518-fc_100k-rate_70%.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_1024-fc_10k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_64-fc_10k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_128-fc_100k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/output.json",
+ "http://172.20.73.203:8181/I2DSIKVWY5C8/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-27/characterization/nfvbench-throughput-fs_1280-fc_10k-rate_ndr-1.json"
+ ],
+ "results": {
+ "latency": [
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_64-fc_100k-rate_70%.json",
+ "frame_sizes": [
+ "64"
+ ],
+ "rate": "70%",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc12_basic",
+ "restart": "true"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-29 03:55:31",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": "true",
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "31dfef5b7f0d4cefa8f78348321335f6",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "404397pps",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "64"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": false,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_64-fc_100k-rate_70%.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": true,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "64"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2519,
+ 2504
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_64-fc_100k-rate_70%.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "64": {
+ "run_config": {
+ "direction-forward": {
+ "rx": {
+ "rate_percent": 0.5412860544,
+ "rate_pps": 201371,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 135321513
+ },
+ "tx": {
+ "rate_percent": 0.5414158848,
+ "rate_pps": 201419,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 135353971
+ },
+ "orig": {
+ "rate_percent": 0.5435095679999999,
+ "rate_pps": 202198,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 135877392
+ }
+ },
+ "direction-total": {
+ "rx": {
+ "rate_percent": 1.0825922688,
+ "rate_pps": 402749.0,
+ "rate_bps": 270648066.0
+ },
+ "tx": {
+ "rate_percent": 1.0828642944000002,
+ "rate_pps": 402850.0,
+ "rate_bps": 270716073.0
+ },
+ "orig": {
+ "rate_percent": 1.0870191359999999,
+ "rate_pps": 404396.0,
+ "rate_bps": 271754784.0
+ }
+ },
+ "direction-reverse": {
+ "rx": {
+ "rate_percent": 0.5413062144,
+ "rate_pps": 201378,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 135326553
+ },
+ "tx": {
+ "rate_percent": 0.5414484096000001,
+ "rate_pps": 201431,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 135362102
+ },
+ "orig": {
+ "rate_percent": 0.5435095679999999,
+ "rate_pps": 202198,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 135877392
+ }
+ }
+ },
+ "packet_path_stats": {
+ "Forward": {
+ "interfaces": [
+ "TRex.TX.p0",
+ "TRex.RX.p1"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 9936,
+ "-1 (-0.0101%)"
+ ],
+ "lat_max_usec": 913,
+ "lat_avg_usec": 72,
+ "lat_min_usec": 31,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ },
+ "Reverse": {
+ "interfaces": [
+ "TRex.TX.p1",
+ "TRex.RX.p0"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 9937,
+ 9937
+ ],
+ "lat_max_usec": 10880,
+ "lat_avg_usec": 72,
+ "lat_min_usec": 30,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ }
+ },
+ "stats": {
+ "total_tx_rate": 402851,
+ "overall": {
+ "drop_rate_percent": 0.02512093171847776,
+ "rx": {
+ "dropped_pkts": 1012,
+ "pkt_bit_rate": 109573400.0,
+ "pkt_rate": 201421.0,
+ "max_delay_usec": 10880,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "avg_delay_usec": 72.0,
+ "total_pkt_bytes": 273870068,
+ "total_pkts": 4027501,
+ "min_delay_usec": 30
+ },
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg=",
+ "tx": {
+ "total_pkt_bytes": 273938884,
+ "total_pkts": 4028513,
+ "pkt_bit_rate": 109576132.0,
+ "pkt_rate": 201426.5
+ }
+ },
+ "1": {
+ "drop_rate_percent": 0.023978350974548694,
+ "rx": {
+ "dropped_pkts": 483,
+ "pkt_bit_rate": 109577136,
+ "pkt_rate": 201428,
+ "max_delay_usec": 10880,
+ "total_pkt_bytes": 136932484,
+ "avg_delay_usec": 72,
+ "total_pkts": 2013713,
+ "min_delay_usec": 30
+ },
+ "tx": {
+ "total_pkt_bytes": 136973556,
+ "total_pkts": 2014317,
+ "pkt_bit_rate": 109577000,
+ "pkt_rate": 201428
+ }
+ },
+ "0": {
+ "drop_rate_percent": 0.02626358110134267,
+ "rx": {
+ "dropped_pkts": 529,
+ "pkt_bit_rate": 109569664,
+ "pkt_rate": 201414,
+ "max_delay_usec": 913,
+ "total_pkt_bytes": 136937584,
+ "avg_delay_usec": 72,
+ "total_pkts": 2013788,
+ "min_delay_usec": 31
+ },
+ "tx": {
+ "total_pkt_bytes": 136965328,
+ "total_pkts": 2014196,
+ "pkt_bit_rate": 109575264,
+ "pkt_rate": 201425
+ }
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 270715872.0,
+ "theoretical_tx_rate_pps": 74404761.90476191
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "31dfef5b7f0d4cefa8f78348321335f6"
+ },
+ "synthesis": {
+ "avg_delay_usec": 72.0,
+ "total_tx_rate": 402851
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_64-fc_100k-rate_90%.json",
+ "frame_sizes": [
+ "64"
+ ],
+ "rate": "90%",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc12_basic",
+ "restart": "true"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-29 03:56:11",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": "true",
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "4d3fa821db7a40a2bc3cab131ccc1635",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "519939pps",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "64"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": false,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_64-fc_100k-rate_90%.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": true,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "64"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2519,
+ 2504
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_64-fc_100k-rate_90%.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "64": {
+ "run_config": {
+ "direction-forward": {
+ "rx": {
+ "rate_percent": 0.6960530304,
+ "rate_pps": 258948,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 174013257
+ },
+ "tx": {
+ "rate_percent": 0.6961078655999999,
+ "rate_pps": 258968,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 174026966
+ },
+ "orig": {
+ "rate_percent": 0.698798016,
+ "rate_pps": 259969,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 174699504
+ }
+ },
+ "direction-total": {
+ "rx": {
+ "rate_percent": 1.3921789055999998,
+ "rate_pps": 517923.0,
+ "rate_bps": 348044725.0
+ },
+ "tx": {
+ "rate_percent": 1.3922579327999998,
+ "rate_pps": 517952.0,
+ "rate_bps": 348064482.0
+ },
+ "orig": {
+ "rate_percent": 1.397596032,
+ "rate_pps": 519938.0,
+ "rate_bps": 349399008.0
+ }
+ },
+ "direction-reverse": {
+ "rx": {
+ "rate_percent": 0.6961258751999999,
+ "rate_pps": 258975,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 174031468
+ },
+ "tx": {
+ "rate_percent": 0.6961500671999998,
+ "rate_pps": 258984,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 174037516
+ },
+ "orig": {
+ "rate_percent": 0.698798016,
+ "rate_pps": 259969,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 174699504
+ }
+ }
+ },
+ "packet_path_stats": {
+ "Forward": {
+ "interfaces": [
+ "TRex.TX.p0",
+ "TRex.RX.p1"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 9936,
+ 9936
+ ],
+ "lat_max_usec": 826,
+ "lat_avg_usec": 86,
+ "lat_min_usec": 32,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ },
+ "Reverse": {
+ "interfaces": [
+ "TRex.TX.p1",
+ "TRex.RX.p0"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 9938,
+ 9938
+ ],
+ "lat_max_usec": 2343,
+ "lat_avg_usec": 82,
+ "lat_min_usec": 31,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ }
+ },
+ "stats": {
+ "total_tx_rate": 517953,
+ "overall": {
+ "drop_rate_percent": 0.005676189600950356,
+ "rx": {
+ "dropped_pkts": 294,
+ "pkt_bit_rate": 141229784.0,
+ "pkt_rate": 259613.5,
+ "max_delay_usec": 2343,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "avg_delay_usec": 84.00010464861909,
+ "total_pkt_bytes": 352188116,
+ "total_pkts": 5179237,
+ "min_delay_usec": 31
+ },
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg=",
+ "tx": {
+ "total_pkt_bytes": 352208108,
+ "total_pkts": 5179531,
+ "pkt_bit_rate": 141223456.0,
+ "pkt_rate": 259601.5
+ }
+ },
+ "1": {
+ "drop_rate_percent": 0.007876922316556519,
+ "rx": {
+ "dropped_pkts": 204,
+ "pkt_bit_rate": 141232784,
+ "pkt_rate": 259619,
+ "max_delay_usec": 2343,
+ "total_pkt_bytes": 176084844,
+ "avg_delay_usec": 82,
+ "total_pkts": 2589483,
+ "min_delay_usec": 31
+ },
+ "tx": {
+ "total_pkt_bytes": 176109392,
+ "total_pkts": 2589844,
+ "pkt_bit_rate": 141216336,
+ "pkt_rate": 259588
+ }
+ },
+ "0": {
+ "drop_rate_percent": 0.0034753234657315733,
+ "rx": {
+ "dropped_pkts": 90,
+ "pkt_bit_rate": 141226784,
+ "pkt_rate": 259608,
+ "max_delay_usec": 826,
+ "total_pkt_bytes": 176103272,
+ "avg_delay_usec": 86,
+ "total_pkts": 2589754,
+ "min_delay_usec": 32
+ },
+ "tx": {
+ "total_pkt_bytes": 176098716,
+ "total_pkts": 2589687,
+ "pkt_bit_rate": 141230576,
+ "pkt_rate": 259615
+ }
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 348064416.0,
+ "theoretical_tx_rate_pps": 74404761.90476191
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "4d3fa821db7a40a2bc3cab131ccc1635"
+ },
+ "synthesis": {
+ "avg_delay_usec": 84.00010464861909,
+ "total_tx_rate": 517953
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_768-fc_100k-rate_70%.json",
+ "frame_sizes": [
+ "768"
+ ],
+ "rate": "70%",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc12_basic",
+ "restart": "true"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-29 03:56:51",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": "true",
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "d72d4f4bfee344328eab1bb6f1ad4f3d",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "323313pps",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "768"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": false,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_768-fc_100k-rate_70%.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": true,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "768"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2519,
+ 2504
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_768-fc_100k-rate_70%.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "768": {
+ "run_config": {
+ "direction-forward": {
+ "rx": {
+ "rate_percent": 4.0606182144,
+ "rate_pps": 161033,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 1015154553
+ },
+ "tx": {
+ "rate_percent": 4.0606182144,
+ "rate_pps": 161033,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 1015154553
+ },
+ "orig": {
+ "rate_percent": 4.076330304,
+ "rate_pps": 161656,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 1019082576
+ }
+ },
+ "direction-total": {
+ "rx": {
+ "rate_percent": 8.121481024,
+ "rate_pps": 322076.0,
+ "rate_bps": 2030370255.0
+ },
+ "tx": {
+ "rate_percent": 8.121481024,
+ "rate_pps": 322076.0,
+ "rate_bps": 2030370255.0
+ },
+ "orig": {
+ "rate_percent": 8.152660608,
+ "rate_pps": 323312.0,
+ "rate_bps": 2038165152.0
+ }
+ },
+ "direction-reverse": {
+ "rx": {
+ "rate_percent": 4.0608628096,
+ "rate_pps": 161043,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 1015215702
+ },
+ "tx": {
+ "rate_percent": 4.0608628096,
+ "rate_pps": 161043,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 1015215702
+ },
+ "orig": {
+ "rate_percent": 4.076330304,
+ "rate_pps": 161656,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 1019082576
+ }
+ }
+ },
+ "packet_path_stats": {
+ "Forward": {
+ "interfaces": [
+ "TRex.TX.p0",
+ "TRex.RX.p1"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 9937,
+ 9937
+ ],
+ "lat_max_usec": 319,
+ "lat_avg_usec": 127,
+ "lat_min_usec": 37,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ },
+ "Reverse": {
+ "interfaces": [
+ "TRex.TX.p1",
+ "TRex.RX.p0"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 9938,
+ 9938
+ ],
+ "lat_max_usec": 5029,
+ "lat_avg_usec": 131,
+ "lat_min_usec": 49,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ }
+ },
+ "stats": {
+ "total_tx_rate": 322076,
+ "overall": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 996376192.0,
+ "pkt_rate": 161330.0,
+ "max_delay_usec": 5029,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "avg_delay_usec": 128.99993976586308,
+ "total_pkt_bytes": 2486430580,
+ "total_pkts": 3220765,
+ "min_delay_usec": 37
+ },
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg=",
+ "tx": {
+ "total_pkt_bytes": 2486430580,
+ "total_pkts": 3220765,
+ "pkt_bit_rate": 996371424.0,
+ "pkt_rate": 161329.0
+ }
+ },
+ "1": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 996389184,
+ "pkt_rate": 161332,
+ "max_delay_usec": 5029,
+ "total_pkt_bytes": 1243177848,
+ "avg_delay_usec": 131,
+ "total_pkts": 1610334,
+ "min_delay_usec": 49
+ },
+ "tx": {
+ "total_pkt_bytes": 1243252732,
+ "total_pkts": 1610431,
+ "pkt_bit_rate": 996370048,
+ "pkt_rate": 161329
+ }
+ },
+ "0": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 996363200,
+ "pkt_rate": 161328,
+ "max_delay_usec": 319,
+ "total_pkt_bytes": 1243252732,
+ "avg_delay_usec": 127,
+ "total_pkts": 1610431,
+ "min_delay_usec": 37
+ },
+ "tx": {
+ "total_pkt_bytes": 1243177848,
+ "total_pkts": 1610334,
+ "pkt_bit_rate": 996372800,
+ "pkt_rate": 161329
+ }
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 2030367104.0,
+ "theoretical_tx_rate_pps": 7931472.081218274
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "d72d4f4bfee344328eab1bb6f1ad4f3d"
+ },
+ "synthesis": {
+ "avg_delay_usec": 128.99993976586308,
+ "total_tx_rate": 322076
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_768-fc_100k-rate_90%.json",
+ "frame_sizes": [
+ "768"
+ ],
+ "rate": "90%",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc12_basic",
+ "restart": "true"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-29 03:57:29",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": "true",
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "fe186736edcd4ccf8aef444a8035ae7a",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "415688pps",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "768"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": false,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_768-fc_100k-rate_90%.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": true,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "768"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2519,
+ 2504
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_768-fc_100k-rate_90%.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "768": {
+ "run_config": {
+ "direction-forward": {
+ "rx": {
+ "rate_percent": 5.223822208,
+ "rate_pps": 207163,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 1305955552
+ },
+ "tx": {
+ "rate_percent": 5.2242786176000005,
+ "rate_pps": 207181,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 1306069654
+ },
+ "orig": {
+ "rate_percent": 5.240994304,
+ "rate_pps": 207844,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 1310248576
+ }
+ },
+ "direction-total": {
+ "rx": {
+ "rate_percent": 10.447904140799999,
+ "rate_pps": 414336.0,
+ "rate_bps": 2611976035.0
+ },
+ "tx": {
+ "rate_percent": 10.4488699136,
+ "rate_pps": 414374.0,
+ "rate_bps": 2612217478.0
+ },
+ "orig": {
+ "rate_percent": 10.481988608,
+ "rate_pps": 415688.0,
+ "rate_bps": 2620497152.0
+ }
+ },
+ "direction-reverse": {
+ "rx": {
+ "rate_percent": 5.224081932799999,
+ "rate_pps": 207173,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 1306020483
+ },
+ "tx": {
+ "rate_percent": 5.224591296,
+ "rate_pps": 207193,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 1306147824
+ },
+ "orig": {
+ "rate_percent": 5.240994304,
+ "rate_pps": 207844,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 1310248576
+ }
+ }
+ },
+ "packet_path_stats": {
+ "Forward": {
+ "interfaces": [
+ "TRex.TX.p0",
+ "TRex.RX.p1"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 9947,
+ 9947
+ ],
+ "lat_max_usec": 5273,
+ "lat_avg_usec": 150,
+ "lat_min_usec": 38,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ },
+ "Reverse": {
+ "interfaces": [
+ "TRex.TX.p1",
+ "TRex.RX.p0"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 9948,
+ 9948
+ ],
+ "lat_max_usec": 11188,
+ "lat_avg_usec": 145,
+ "lat_min_usec": 37,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ }
+ },
+ "stats": {
+ "total_tx_rate": 414374,
+ "overall": {
+ "drop_rate_percent": 0.009242844517979626,
+ "rx": {
+ "dropped_pkts": 383,
+ "pkt_bit_rate": 1203150656.0,
+ "pkt_rate": 194810.0,
+ "max_delay_usec": 11188,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "avg_delay_usec": 147.50006214758398,
+ "total_pkt_bytes": 3198676236,
+ "total_pkts": 4143363,
+ "min_delay_usec": 37
+ },
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg=",
+ "tx": {
+ "total_pkt_bytes": 3198971912,
+ "total_pkts": 4143746,
+ "pkt_bit_rate": 1203347648.0,
+ "pkt_rate": 194842.0
+ }
+ },
+ "1": {
+ "drop_rate_percent": 0.008735795283153188,
+ "rx": {
+ "dropped_pkts": 181,
+ "pkt_bit_rate": 1195129344,
+ "pkt_rate": 193511,
+ "max_delay_usec": 11188,
+ "total_pkt_bytes": 1599298360,
+ "avg_delay_usec": 145,
+ "total_pkts": 2071630,
+ "min_delay_usec": 37
+ },
+ "tx": {
+ "total_pkt_bytes": 1599533820,
+ "total_pkts": 2071935,
+ "pkt_bit_rate": 1205016576,
+ "pkt_rate": 195112
+ }
+ },
+ "0": {
+ "drop_rate_percent": 0.009749924100219567,
+ "rx": {
+ "dropped_pkts": 202,
+ "pkt_bit_rate": 1211171968,
+ "pkt_rate": 196109,
+ "max_delay_usec": 5273,
+ "total_pkt_bytes": 1599377876,
+ "avg_delay_usec": 150,
+ "total_pkts": 2071733,
+ "min_delay_usec": 38
+ },
+ "tx": {
+ "total_pkt_bytes": 1599438092,
+ "total_pkts": 2071811,
+ "pkt_bit_rate": 1201678720,
+ "pkt_rate": 194572
+ }
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 2612213696.0,
+ "theoretical_tx_rate_pps": 7931472.081218274
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "fe186736edcd4ccf8aef444a8035ae7a"
+ },
+ "synthesis": {
+ "avg_delay_usec": 147.50006214758398,
+ "total_tx_rate": 414374
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_1518-fc_100k-rate_70%.json",
+ "frame_sizes": [
+ "1518"
+ ],
+ "rate": "70%",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc12_basic",
+ "restart": "true"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-29 03:58:09",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": "true",
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "3e05e243e2d848f58e131d186c909bc7",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "353369pps",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "1518"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": false,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_1518-fc_100k-rate_70%.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": true,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "1518"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2519,
+ 2504
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_1518-fc_100k-rate_70%.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "1518": {
+ "run_config": {
+ "direction-forward": {
+ "rx": {
+ "rate_percent": 8.6621931776,
+ "rate_pps": 176003,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 2165548294
+ },
+ "tx": {
+ "rate_percent": 8.6621931776,
+ "rate_pps": 176003,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 2165548294
+ },
+ "orig": {
+ "rate_percent": 8.695704352,
+ "rate_pps": 176684,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 2173926088
+ }
+ },
+ "direction-total": {
+ "rx": {
+ "rate_percent": 17.324908044800004,
+ "rate_pps": 352017.0,
+ "rate_bps": 4331227010.0
+ },
+ "tx": {
+ "rate_percent": 17.324908044800004,
+ "rate_pps": 352017.0,
+ "rate_bps": 4331227010.0
+ },
+ "orig": {
+ "rate_percent": 17.391408704,
+ "rate_pps": 353368.0,
+ "rate_bps": 4347852176.0
+ }
+ },
+ "direction-reverse": {
+ "rx": {
+ "rate_percent": 8.662714867200002,
+ "rate_pps": 176014,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 2165678716
+ },
+ "tx": {
+ "rate_percent": 8.662714867200002,
+ "rate_pps": 176014,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 2165678716
+ },
+ "orig": {
+ "rate_percent": 8.695704352,
+ "rate_pps": 176684,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 2173926088
+ }
+ }
+ },
+ "packet_path_stats": {
+ "Forward": {
+ "interfaces": [
+ "TRex.TX.p0",
+ "TRex.RX.p1"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 9936,
+ 9936
+ ],
+ "lat_max_usec": 327,
+ "lat_avg_usec": 135,
+ "lat_min_usec": 43,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ },
+ "Reverse": {
+ "interfaces": [
+ "TRex.TX.p1",
+ "TRex.RX.p0"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 9937,
+ 9937
+ ],
+ "lat_max_usec": 4259,
+ "lat_avg_usec": 130,
+ "lat_min_usec": 44,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ }
+ },
+ "stats": {
+ "total_tx_rate": 352017,
+ "overall": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 2147925760.0,
+ "pkt_rate": 176406.5,
+ "max_delay_usec": 4259,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "avg_delay_usec": 132.50007528028414,
+ "total_pkt_bytes": 5357710916,
+ "total_pkts": 3520178,
+ "min_delay_usec": 43
+ },
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg=",
+ "tx": {
+ "total_pkt_bytes": 5357710916,
+ "total_pkts": 3520178,
+ "pkt_bit_rate": 2148198656.0,
+ "pkt_rate": 176428.5
+ }
+ },
+ "1": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 2147965440,
+ "pkt_rate": 176410,
+ "max_delay_usec": 4259,
+ "total_pkt_bytes": 2678774792,
+ "avg_delay_usec": 130,
+ "total_pkts": 1760036,
+ "min_delay_usec": 44
+ },
+ "tx": {
+ "total_pkt_bytes": 2678936124,
+ "total_pkts": 1760142,
+ "pkt_bit_rate": 2148139008,
+ "pkt_rate": 176424
+ }
+ },
+ "0": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 2147886080,
+ "pkt_rate": 176403,
+ "max_delay_usec": 327,
+ "total_pkt_bytes": 2678936124,
+ "avg_delay_usec": 135,
+ "total_pkts": 1760142,
+ "min_delay_usec": 43
+ },
+ "tx": {
+ "total_pkt_bytes": 2678774792,
+ "total_pkts": 1760036,
+ "pkt_bit_rate": 2148258304,
+ "pkt_rate": 176433
+ }
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 4331217168.0,
+ "theoretical_tx_rate_pps": 4063719.1157347206
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "3e05e243e2d848f58e131d186c909bc7"
+ },
+ "synthesis": {
+ "avg_delay_usec": 132.50007528028414,
+ "total_tx_rate": 352017
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_1518-fc_100k-rate_90%.json",
+ "frame_sizes": [
+ "1518"
+ ],
+ "rate": "90%",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc12_basic",
+ "restart": "true"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-29 03:58:48",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": "true",
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "7910b7f29a8f4eae96799809b0c39463",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "454332pps",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "1518"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": false,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_1518-fc_100k-rate_90%.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": true,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "1518"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2519,
+ 2504
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_1518-fc_100k-rate_90%.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "1518": {
+ "run_config": {
+ "direction-forward": {
+ "rx": {
+ "rate_percent": 11.1438755264,
+ "rate_pps": 226427,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 2785968881
+ },
+ "tx": {
+ "rate_percent": 11.144554707200001,
+ "rate_pps": 226441,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 2786138676
+ },
+ "orig": {
+ "rate_percent": 11.180201856,
+ "rate_pps": 227166,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 2795050464
+ }
+ },
+ "direction-total": {
+ "rx": {
+ "rate_percent": 22.289040512,
+ "rate_pps": 452881.0,
+ "rate_bps": 5572260127.0
+ },
+ "tx": {
+ "rate_percent": 22.289778752,
+ "rate_pps": 452896.0,
+ "rate_bps": 5572444687.0
+ },
+ "orig": {
+ "rate_percent": 22.360403712,
+ "rate_pps": 454332.0,
+ "rate_bps": 5590100928.0
+ }
+ },
+ "direction-reverse": {
+ "rx": {
+ "rate_percent": 11.145164985600001,
+ "rate_pps": 226454,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 2786291246
+ },
+ "tx": {
+ "rate_percent": 11.145224044799999,
+ "rate_pps": 226455,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 2786306011
+ },
+ "orig": {
+ "rate_percent": 11.180201856,
+ "rate_pps": 227166,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 2795050464
+ }
+ }
+ },
+ "packet_path_stats": {
+ "Forward": {
+ "interfaces": [
+ "TRex.TX.p0",
+ "TRex.RX.p1"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 9948,
+ "-2 (-0.0201%)"
+ ],
+ "lat_max_usec": 205,
+ "lat_avg_usec": 100,
+ "lat_min_usec": 38,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ },
+ "Reverse": {
+ "interfaces": [
+ "TRex.TX.p1",
+ "TRex.RX.p0"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 9949,
+ 9949
+ ],
+ "lat_max_usec": 5711,
+ "lat_avg_usec": 106,
+ "lat_min_usec": 38,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ }
+ },
+ "stats": {
+ "total_tx_rate": 452897,
+ "overall": {
+ "drop_rate_percent": 0.003312011340326829,
+ "rx": {
+ "dropped_pkts": 150,
+ "pkt_bit_rate": 2634780672.0,
+ "pkt_rate": 216390.5,
+ "max_delay_usec": 5711,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "avg_delay_usec": 102.9998264448576,
+ "total_pkt_bytes": 6892864040,
+ "total_pkts": 4528820,
+ "min_delay_usec": 38
+ },
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg=",
+ "tx": {
+ "total_pkt_bytes": 6893092340,
+ "total_pkts": 4528970,
+ "pkt_bit_rate": 2645309568.0,
+ "pkt_rate": 217255.5
+ }
+ },
+ "1": {
+ "drop_rate_percent": 0.006093917872533785,
+ "rx": {
+ "dropped_pkts": 138,
+ "pkt_bit_rate": 2509765376,
+ "pkt_rate": 206123,
+ "max_delay_usec": 5711,
+ "total_pkt_bytes": 3446232638,
+ "avg_delay_usec": 106,
+ "total_pkts": 2264279,
+ "min_delay_usec": 38
+ },
+ "tx": {
+ "total_pkt_bytes": 3446649666,
+ "total_pkts": 2264553,
+ "pkt_bit_rate": 2530603776,
+ "pkt_rate": 207835
+ }
+ },
+ "0": {
+ "drop_rate_percent": 0.0005299377279008239,
+ "rx": {
+ "dropped_pkts": 12,
+ "pkt_bit_rate": 2759795968,
+ "pkt_rate": 226658,
+ "max_delay_usec": 205,
+ "total_pkt_bytes": 3446631402,
+ "avg_delay_usec": 100,
+ "total_pkts": 2264541,
+ "min_delay_usec": 38
+ },
+ "tx": {
+ "total_pkt_bytes": 3446442674,
+ "total_pkts": 2264417,
+ "pkt_bit_rate": 2760015360,
+ "pkt_rate": 226676
+ }
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 5572444688.0,
+ "theoretical_tx_rate_pps": 4063719.1157347206
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "7910b7f29a8f4eae96799809b0c39463"
+ },
+ "synthesis": {
+ "avg_delay_usec": 102.9998264448576,
+ "total_tx_rate": 452897
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_9000-fc_100k-rate_70%.json",
+ "frame_sizes": [
+ "9000"
+ ],
+ "rate": "70%",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc12_basic",
+ "restart": "true"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-29 03:59:26",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": "true",
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "422174a3acbd45169f09f61c00aee4d4",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "183573pps",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "9000"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": false,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_9000-fc_100k-rate_70%.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": true,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "9000"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2519,
+ 2504
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_9000-fc_100k-rate_70%.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "9000": {
+ "run_config": {
+ "direction-forward": {
+ "rx": {
+ "rate_percent": 26.392404543999998,
+ "rate_pps": 91437,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 6598101136
+ },
+ "tx": {
+ "rate_percent": 26.392404543999998,
+ "rate_pps": 91437,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 6598101136
+ },
+ "orig": {
+ "rate_percent": 26.49325536,
+ "rate_pps": 91786,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 6623313840
+ }
+ },
+ "direction-total": {
+ "rx": {
+ "rate_percent": 52.786425472,
+ "rate_pps": 182879.0,
+ "rate_bps": 13196606368.0
+ },
+ "tx": {
+ "rate_percent": 52.786425472,
+ "rate_pps": 182879.0,
+ "rate_bps": 13196606368.0
+ },
+ "orig": {
+ "rate_percent": 52.98651072,
+ "rate_pps": 183572.0,
+ "rate_bps": 13246627680.0
+ }
+ },
+ "direction-reverse": {
+ "rx": {
+ "rate_percent": 26.394020928,
+ "rate_pps": 91442,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 6598505232
+ },
+ "tx": {
+ "rate_percent": 26.394020928,
+ "rate_pps": 91442,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 6598505232
+ },
+ "orig": {
+ "rate_percent": 26.49325536,
+ "rate_pps": 91786,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 6623313840
+ }
+ }
+ },
+ "packet_path_stats": {
+ "Forward": {
+ "interfaces": [
+ "TRex.TX.p0",
+ "TRex.RX.p1"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 9937,
+ 9937
+ ],
+ "lat_max_usec": 7076,
+ "lat_avg_usec": 465,
+ "lat_min_usec": 117,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ },
+ "Reverse": {
+ "interfaces": [
+ "TRex.TX.p1",
+ "TRex.RX.p0"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 9938,
+ 9938
+ ],
+ "lat_max_usec": 7737,
+ "lat_avg_usec": 470,
+ "lat_min_usec": 130,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ }
+ },
+ "stats": {
+ "total_tx_rate": 182879,
+ "overall": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 6309462016.0,
+ "pkt_rate": 87592.0,
+ "max_delay_usec": 7737,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "avg_delay_usec": 467.4999234469854,
+ "total_pkt_bytes": 16466497192,
+ "total_pkts": 1828798,
+ "min_delay_usec": 117
+ },
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg=",
+ "tx": {
+ "total_pkt_bytes": 16466497192,
+ "total_pkts": 1828798,
+ "pkt_bit_rate": 6308925440.0,
+ "pkt_rate": 87584.5
+ }
+ },
+ "1": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 6276257280,
+ "pkt_rate": 87131,
+ "max_delay_usec": 7737,
+ "total_pkt_bytes": 8232996484,
+ "avg_delay_usec": 470,
+ "total_pkts": 914371,
+ "min_delay_usec": 130
+ },
+ "tx": {
+ "total_pkt_bytes": 8233500708,
+ "total_pkts": 914427,
+ "pkt_bit_rate": 6310474240,
+ "pkt_rate": 87606
+ }
+ },
+ "0": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 6342666752,
+ "pkt_rate": 88053,
+ "max_delay_usec": 7076,
+ "total_pkt_bytes": 8233500708,
+ "avg_delay_usec": 465,
+ "total_pkts": 914427,
+ "min_delay_usec": 117
+ },
+ "tx": {
+ "total_pkt_bytes": 8232996484,
+ "total_pkts": 914371,
+ "pkt_bit_rate": 6307376640,
+ "pkt_rate": 87563
+ }
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 13196548640.0,
+ "theoretical_tx_rate_pps": 692904.6563192905
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "422174a3acbd45169f09f61c00aee4d4"
+ },
+ "synthesis": {
+ "avg_delay_usec": 467.4999234469854,
+ "total_tx_rate": 182879
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_9000-fc_100k-rate_90%.json",
+ "frame_sizes": [
+ "9000"
+ ],
+ "rate": "90%",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc12_basic",
+ "restart": "true"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-29 04:00:06",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": "true",
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "f14fd151f22a41f7b5185e37d548ad45",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "236023pps",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "9000"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": false,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_9000-fc_100k-rate_90%.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": true,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "9000"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2519,
+ 2504
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_9000-fc_100k-rate_90%.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "9000": {
+ "run_config": {
+ "direction-forward": {
+ "rx": {
+ "rate_percent": 33.929862912,
+ "rate_pps": 117550,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 8482465728
+ },
+ "tx": {
+ "rate_percent": 33.93338432,
+ "rate_pps": 117563,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 8483346080
+ },
+ "orig": {
+ "rate_percent": 34.062839360000005,
+ "rate_pps": 118011,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 8515709840
+ }
+ },
+ "direction-total": {
+ "rx": {
+ "rate_percent": 67.86532543999999,
+ "rate_pps": 235120.0,
+ "rate_bps": 16966331360.0
+ },
+ "tx": {
+ "rate_percent": 67.868846848,
+ "rate_pps": 235133.0,
+ "rate_bps": 16967211712.0
+ },
+ "orig": {
+ "rate_percent": 68.12567872000001,
+ "rate_pps": 236022.0,
+ "rate_bps": 17031419680.0
+ }
+ },
+ "direction-reverse": {
+ "rx": {
+ "rate_percent": 33.935462528,
+ "rate_pps": 117570,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 8483865632
+ },
+ "tx": {
+ "rate_percent": 33.935462528,
+ "rate_pps": 117570,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 8483865632
+ },
+ "orig": {
+ "rate_percent": 34.062839360000005,
+ "rate_pps": 118011,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 8515709840
+ }
+ }
+ },
+ "packet_path_stats": {
+ "Forward": {
+ "interfaces": [
+ "TRex.TX.p0",
+ "TRex.RX.p1"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 9937,
+ 9937
+ ],
+ "lat_max_usec": 4884,
+ "lat_avg_usec": 544,
+ "lat_min_usec": 229,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ },
+ "Reverse": {
+ "interfaces": [
+ "TRex.TX.p1",
+ "TRex.RX.p0"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 9939,
+ 9939
+ ],
+ "lat_max_usec": 8447,
+ "lat_avg_usec": 520,
+ "lat_min_usec": 229,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ }
+ },
+ "stats": {
+ "total_tx_rate": 235133,
+ "overall": {
+ "drop_rate_percent": 0.005188548448283782,
+ "rx": {
+ "dropped_pkts": 122,
+ "pkt_bit_rate": 8485221632.0,
+ "pkt_rate": 117797.5,
+ "max_delay_usec": 8447,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "avg_delay_usec": 532.000990128487,
+ "total_pkt_bytes": 21170294840,
+ "total_pkts": 2351210,
+ "min_delay_usec": 229
+ },
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg=",
+ "tx": {
+ "total_pkt_bytes": 21171393328,
+ "total_pkts": 2351332,
+ "pkt_bit_rate": 8486891520.0,
+ "pkt_rate": 117820.5
+ }
+ },
+ "1": {
+ "drop_rate_percent": 0.010376779149818577,
+ "rx": {
+ "dropped_pkts": 122,
+ "pkt_bit_rate": 8483412992,
+ "pkt_rate": 117772,
+ "max_delay_usec": 8447,
+ "total_pkt_bytes": 10584274032,
+ "avg_delay_usec": 520,
+ "total_pkts": 1175508,
+ "min_delay_usec": 229
+ },
+ "tx": {
+ "total_pkt_bytes": 10586020808,
+ "total_pkts": 1175702,
+ "pkt_bit_rate": 8486368256,
+ "pkt_rate": 117813
+ }
+ },
+ "0": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 8487030272,
+ "pkt_rate": 117823,
+ "max_delay_usec": 4884,
+ "total_pkt_bytes": 10586020808,
+ "avg_delay_usec": 544,
+ "total_pkts": 1175702,
+ "min_delay_usec": 229
+ },
+ "tx": {
+ "total_pkt_bytes": 10585372520,
+ "total_pkts": 1175630,
+ "pkt_bit_rate": 8487414784,
+ "pkt_rate": 117828
+ }
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 16967197280.0,
+ "theoretical_tx_rate_pps": 692904.6563192905
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "f14fd151f22a41f7b5185e37d548ad45"
+ },
+ "synthesis": {
+ "avg_delay_usec": 532.000990128487,
+ "total_tx_rate": 235133
+ }
+ }
+ ],
+ "throughput": [
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_64-fc_128-rate_ndr-2.json",
+ "frame_sizes": [
+ "64"
+ ],
+ "rate": "ndr",
+ "flow_count": "128",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-29 00:21:09",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "2f9d3285d24c4aa38cce7d6e7e01cee8",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "64"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 128,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_64-fc_128-rate_ndr-2.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "64"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2519,
+ 2504
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_64-fc_128-rate_ndr-2.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "64": {
+ "ndr": {
+ "load_percent_per_direction": 0.48828125,
+ "timestamp_sec": 1648513409.8775496,
+ "stats": {
+ "total_tx_rate": 361069,
+ "overall": {
+ "rx_pkts": 3610699,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 1893,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 3610699,
+ "avg_delay_usec": 91.50007602406072,
+ "min_delay_usec": 28,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1805258,
+ "min_delay_usec": 28,
+ "drop_pct": 0,
+ "max_delay_usec": 990,
+ "tx_pkts": 1805441,
+ "avg_delay_usec": 90,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 1805441,
+ "min_delay_usec": 32,
+ "drop_pct": 0,
+ "max_delay_usec": 1893,
+ "tx_pkts": 1805258,
+ "avg_delay_usec": 93,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 242638368.0,
+ "theoretical_tx_rate_pps": 74404761.90476191
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 0.9765625,
+ "duration_sec": 10.0,
+ "l2frame_size": "64",
+ "rate_pps": 363304,
+ "rate_bps": 244140624.0,
+ "time_taken_sec": 137.65262913703918
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 706488.1334367159,
+ "rx_pkts": 4041557,
+ "time_ms": 1648513284731,
+ "drop_pct": 421600523,
+ "total_tx_pps": 42564208,
+ "tx_pps": 74404760,
+ "tx_pkts": 425642080,
+ "warning": "WARNING: There is a significant difference between requested TX rate (74404760) and actual TX rate (42564208). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "drop_percentage": 99.05047992435334
+ },
+ {
+ "rx_pps": 518432.56253104715,
+ "rx_pkts": 5152442,
+ "time_ms": 1648513297224,
+ "drop_pct": 364583410,
+ "total_tx_pps": 36973585,
+ "tx_pps": 37202380,
+ "tx_pkts": 369735852,
+ "drop_percentage": 98.60645323624175
+ },
+ {
+ "rx_pps": 606695.2079490544,
+ "rx_pkts": 6029034,
+ "time_ms": 1648513309723,
+ "drop_pct": 178820303,
+ "total_tx_pps": 18484933,
+ "tx_pps": 18601190,
+ "tx_pkts": 184849337,
+ "drop_percentage": 96.73840647856909
+ },
+ {
+ "rx_pps": 490524.8337800907,
+ "rx_pkts": 4874836,
+ "time_ms": 1648513322260,
+ "drop_pct": 87554471,
+ "total_tx_pps": 9242930,
+ "tx_pps": 9300594,
+ "tx_pkts": 92429307,
+ "drop_percentage": 94.72587628510512
+ },
+ {
+ "rx_pps": 1794968.8359250196,
+ "rx_pkts": 17837503,
+ "time_ms": 1648513334800,
+ "drop_pct": 28374814,
+ "total_tx_pps": 4621231,
+ "tx_pps": 4650296,
+ "tx_pkts": 46212317,
+ "drop_percentage": 61.40097671363243
+ },
+ {
+ "rx_pps": 1920709.0456904878,
+ "rx_pkts": 19088969,
+ "time_ms": 1648513347304,
+ "drop_pct": 4019517,
+ "total_tx_pps": 2310848,
+ "tx_pps": 2325148,
+ "tx_pkts": 23108486,
+ "drop_percentage": 17.394116602879134
+ },
+ {
+ "rx_pps": 1161713.5081454054,
+ "rx_pkts": 11545692,
+ "time_ms": 1648513359821,
+ "drop_pct": 8552,
+ "total_tx_pps": 1155424,
+ "tx_pps": 1162574,
+ "tx_pkts": 11554244,
+ "drop_percentage": 0.07401609313426305
+ },
+ {
+ "rx_pps": 581251.9908500996,
+ "rx_pkts": 5776774,
+ "time_ms": 1648513372321,
+ "drop_pct": 338,
+ "total_tx_pps": 577711,
+ "tx_pps": 581286,
+ "tx_pkts": 5777112,
+ "drop_percentage": 0.005850674177686014
+ },
+ {
+ "rx_pps": 290642.0,
+ "rx_pkts": 2888548,
+ "time_ms": 1648513384819,
+ "drop_pct": 0,
+ "total_tx_pps": 288854,
+ "tx_pps": 290642,
+ "tx_pkts": 2888548,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 435944.8824348059,
+ "rx_pkts": 4332640,
+ "time_ms": 1648513397325,
+ "drop_pct": 190,
+ "total_tx_pps": 433283,
+ "tx_pps": 435964,
+ "tx_pkts": 4332830,
+ "drop_percentage": 0.0043851247337190705
+ },
+ {
+ "rx_pps": 363304.0,
+ "rx_pkts": 3610699,
+ "time_ms": 1648513409876,
+ "drop_pct": 0,
+ "total_tx_pps": 361069,
+ "tx_pps": 363304,
+ "tx_pkts": 3610699,
+ "ndr_pps": 181652,
+ "drop_percentage": 0.0
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 128,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "2f9d3285d24c4aa38cce7d6e7e01cee8"
+ },
+ "synthesis": {
+ "avg_delay_usec": 91.50007602406072,
+ "total_tx_rate": 361069
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_128-fc_128-rate_ndr-2.json",
+ "frame_sizes": [
+ "128"
+ ],
+ "rate": "ndr",
+ "flow_count": "128",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-29 00:28:22",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "a2a3552c4052460aae598a9a2f15a5af",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "128"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 128,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_128-fc_128-rate_ndr-2.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "128"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2519,
+ 2504
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_128-fc_128-rate_ndr-2.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "128": {
+ "ndr": {
+ "load_percent_per_direction": 1.5625,
+ "timestamp_sec": 1648513842.6383016,
+ "stats": {
+ "total_tx_rate": 655714,
+ "overall": {
+ "rx_pkts": 6557144,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 297,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 6557144,
+ "avg_delay_usec": 144.50047810449183,
+ "min_delay_usec": 32,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 3278407,
+ "min_delay_usec": 32,
+ "drop_pct": 0,
+ "max_delay_usec": 297,
+ "tx_pkts": 3278737,
+ "avg_delay_usec": 135,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 3278737,
+ "min_delay_usec": 35,
+ "drop_pct": 0,
+ "max_delay_usec": 285,
+ "tx_pkts": 3278407,
+ "avg_delay_usec": 154,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 776365376.0,
+ "theoretical_tx_rate_pps": 42229729.72972973
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 3.125,
+ "duration_sec": 10.0,
+ "l2frame_size": "128",
+ "rate_pps": 659838,
+ "rate_bps": 781250000.0,
+ "time_taken_sec": 137.85558819770813
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 437885.75742536853,
+ "rx_pkts": 4035817,
+ "time_ms": 1648513717287,
+ "drop_pct": 385178610,
+ "total_tx_pps": 38921442,
+ "tx_pps": 42229728,
+ "tx_pkts": 389214427,
+ "drop_percentage": 98.96308648394475
+ },
+ {
+ "rx_pps": 514776.8413086158,
+ "rx_pkts": 5125891,
+ "time_ms": 1648513729860,
+ "drop_pct": 205125392,
+ "total_tx_pps": 21025128,
+ "tx_pps": 21114864,
+ "tx_pkts": 210251283,
+ "drop_percentage": 97.5620167797026
+ },
+ {
+ "rx_pps": 432863.9814335654,
+ "rx_pkts": 4301586,
+ "time_ms": 1648513742365,
+ "drop_pct": 100612899,
+ "total_tx_pps": 10491448,
+ "tx_pps": 10557432,
+ "tx_pkts": 104914485,
+ "drop_percentage": 95.89991219992167
+ },
+ {
+ "rx_pps": 464230.29844768636,
+ "rx_pkts": 4613753,
+ "time_ms": 1648513754871,
+ "drop_pct": 47848768,
+ "total_tx_pps": 5246252,
+ "tx_pps": 5278716,
+ "tx_pkts": 52462521,
+ "drop_percentage": 91.20562086598926
+ },
+ {
+ "rx_pps": 2260538.697414863,
+ "rx_pkts": 22466366,
+ "time_ms": 1648513767378,
+ "drop_pct": 3764896,
+ "total_tx_pps": 2623126,
+ "tx_pps": 2639358,
+ "tx_pkts": 26231262,
+ "drop_percentage": 14.352706324232512
+ },
+ {
+ "rx_pps": 1312938.9549736879,
+ "rx_pkts": 13048644,
+ "time_ms": 1648513780029,
+ "drop_pct": 66976,
+ "total_tx_pps": 1311562,
+ "tx_pps": 1319678,
+ "tx_pkts": 13115620,
+ "drop_percentage": 0.510658283786813
+ },
+ {
+ "rx_pps": 659838.0,
+ "rx_pkts": 6557144,
+ "time_ms": 1648513792527,
+ "drop_pct": 0,
+ "total_tx_pps": 655714,
+ "tx_pps": 659838,
+ "tx_pkts": 6557144,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 988639.1634389523,
+ "rx_pkts": 9825098,
+ "time_ms": 1648513805064,
+ "drop_pct": 11119,
+ "total_tx_pps": 983621,
+ "tx_pps": 989758,
+ "tx_pkts": 9836217,
+ "drop_percentage": 0.11304142639390734
+ },
+ {
+ "rx_pps": 824644.053266355,
+ "rx_pkts": 8195727,
+ "time_ms": 1648513817582,
+ "drop_pct": 1530,
+ "total_tx_pps": 819725,
+ "tx_pps": 824798,
+ "tx_pkts": 8197257,
+ "drop_percentage": 0.018664780181955987
+ },
+ {
+ "rx_pps": 741931.4226302601,
+ "rx_pkts": 7373687,
+ "time_ms": 1648513830132,
+ "drop_pct": 3842,
+ "total_tx_pps": 737752,
+ "tx_pps": 742318,
+ "tx_pkts": 7377529,
+ "drop_percentage": 0.05207705723691496
+ },
+ {
+ "rx_pps": 700991.5684744361,
+ "rx_pkts": 6966807,
+ "time_ms": 1648513842637,
+ "drop_pct": 859,
+ "total_tx_pps": 696766,
+ "tx_pps": 701078,
+ "tx_pkts": 6967666,
+ "ndr_pps": 329919,
+ "drop_percentage": 0.012328375097198975
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 128,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "a2a3552c4052460aae598a9a2f15a5af"
+ },
+ "synthesis": {
+ "avg_delay_usec": 144.50047810449183,
+ "total_tx_rate": 655714
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_256-fc_128-rate_ndr-2.json",
+ "frame_sizes": [
+ "256"
+ ],
+ "rate": "ndr",
+ "flow_count": "128",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-29 00:30:46",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "b5ded3ef32b240bb8264ea8b1a53b1c7",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "256"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 128,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_256-fc_128-rate_ndr-0.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "256"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2519,
+ 2504
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_256-fc_128-rate_ndr-0.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "256": {
+ "ndr": {
+ "load_percent_per_direction": 1.46484375,
+ "timestamp_sec": 1648513986.98413,
+ "stats": {
+ "total_tx_rate": 330004,
+ "overall": {
+ "rx_pkts": 3300040,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 1086,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 3300040,
+ "avg_delay_usec": 139.50062878025722,
+ "min_delay_usec": 31,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1649937,
+ "min_delay_usec": 31,
+ "drop_pct": 0,
+ "max_delay_usec": 293,
+ "tx_pkts": 1650103,
+ "avg_delay_usec": 127,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 1650103,
+ "min_delay_usec": 32,
+ "drop_pct": 0,
+ "max_delay_usec": 1086,
+ "tx_pkts": 1649937,
+ "avg_delay_usec": 152,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 728648832.0,
+ "theoretical_tx_rate_pps": 22644927.536231883
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 2.9296875,
+ "duration_sec": 10.0,
+ "l2frame_size": "256",
+ "rate_pps": 331712,
+ "rate_bps": 732421874.0,
+ "time_taken_sec": 137.723162651062
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 414547.50338899135,
+ "rx_pkts": 3772754,
+ "time_ms": 1648513861746,
+ "drop_pct": 202316378,
+ "total_tx_pps": 20608913,
+ "tx_pps": 22644926,
+ "tx_pkts": 206089132,
+ "drop_percentage": 98.16935810084347
+ },
+ {
+ "rx_pps": 483450.9476070763,
+ "rx_pkts": 4804294,
+ "time_ms": 1648513874342,
+ "drop_pct": 107712677,
+ "total_tx_pps": 11251697,
+ "tx_pps": 11322462,
+ "tx_pkts": 112516971,
+ "drop_percentage": 95.73016056395618
+ },
+ {
+ "rx_pps": 824045.7574638664,
+ "rx_pkts": 8189779,
+ "time_ms": 1648513886844,
+ "drop_pct": 48074357,
+ "total_tx_pps": 5626413,
+ "tx_pps": 5661230,
+ "tx_pkts": 56264136,
+ "drop_percentage": 85.4440508959384
+ },
+ {
+ "rx_pps": 2016586.653705108,
+ "rx_pkts": 20041847,
+ "time_ms": 1648513899359,
+ "drop_pct": 8090211,
+ "total_tx_pps": 2813205,
+ "tx_pps": 2830614,
+ "tx_pkts": 28132058,
+ "drop_percentage": 28.757977820179384
+ },
+ {
+ "rx_pps": 1392997.5749045208,
+ "rx_pkts": 13842915,
+ "time_ms": 1648513911857,
+ "drop_pct": 221690,
+ "total_tx_pps": 1406460,
+ "tx_pps": 1415306,
+ "tx_pkts": 14064605,
+ "drop_percentage": 1.5762262786619319
+ },
+ {
+ "rx_pps": 707431.7454844667,
+ "rx_pkts": 7030812,
+ "time_ms": 1648513924415,
+ "drop_pct": 2189,
+ "total_tx_pps": 703300,
+ "tx_pps": 707652,
+ "tx_pkts": 7033001,
+ "drop_percentage": 0.03112469342745721
+ },
+ {
+ "rx_pps": 353821.1698142399,
+ "rx_pkts": 3516100,
+ "time_ms": 1648513936917,
+ "drop_pct": 48,
+ "total_tx_pps": 351614,
+ "tx_pps": 353826,
+ "tx_pkts": 3516148,
+ "drop_percentage": 0.001365130250490025
+ },
+ {
+ "rx_pps": 176912.0,
+ "rx_pkts": 1758241,
+ "time_ms": 1648513949440,
+ "drop_pct": 0,
+ "total_tx_pps": 175824,
+ "tx_pps": 176912,
+ "tx_pkts": 1758241,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 265368.99381318525,
+ "rx_pkts": 2637373,
+ "time_ms": 1648513961956,
+ "drop_pct": 10,
+ "total_tx_pps": 263738,
+ "tx_pps": 265370,
+ "tx_pkts": 2637383,
+ "drop_percentage": 0.0003791637392066302
+ },
+ {
+ "rx_pps": 309598.0,
+ "rx_pkts": 3076942,
+ "time_ms": 1648513974476,
+ "drop_pct": 0,
+ "total_tx_pps": 307694,
+ "tx_pps": 309598,
+ "tx_pkts": 3076942,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 331712.0,
+ "rx_pkts": 3300040,
+ "time_ms": 1648513986983,
+ "drop_pct": 0,
+ "total_tx_pps": 330004,
+ "tx_pps": 331712,
+ "tx_pkts": 3300040,
+ "ndr_pps": 165856,
+ "drop_percentage": 0.0
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 128,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "b5ded3ef32b240bb8264ea8b1a53b1c7"
+ },
+ "synthesis": {
+ "avg_delay_usec": 139.50062878025722,
+ "total_tx_rate": 330004
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_512-fc_128-rate_ndr-2.json",
+ "frame_sizes": [
+ "512"
+ ],
+ "rate": "ndr",
+ "flow_count": "128",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-29 00:38:00",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "14a1559a15b240baba4ced0f0074e6b2",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "512"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 128,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_512-fc_128-rate_ndr-0.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "512"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2519,
+ 2504
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_512-fc_128-rate_ndr-0.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "512": {
+ "ndr": {
+ "load_percent_per_direction": 3.515625,
+ "timestamp_sec": 1648514420.241935,
+ "stats": {
+ "total_tx_rate": 410478,
+ "overall": {
+ "rx_pkts": 4104780,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 2294,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 4104780,
+ "avg_delay_usec": 102.50042657584572,
+ "min_delay_usec": 25,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 2052287,
+ "min_delay_usec": 25,
+ "drop_pct": 0,
+ "max_delay_usec": 178,
+ "tx_pkts": 2052493,
+ "avg_delay_usec": 94,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 2052493,
+ "min_delay_usec": 32,
+ "drop_pct": 0,
+ "max_delay_usec": 2294,
+ "tx_pkts": 2052287,
+ "avg_delay_usec": 111,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 1746994368.0,
+ "theoretical_tx_rate_pps": 11748120.30075188
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 7.03125,
+ "duration_sec": 10.0,
+ "l2frame_size": "512",
+ "rate_pps": 413018,
+ "rate_bps": 1757812500.0,
+ "time_taken_sec": 137.53734683990479
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 524663.0616057739,
+ "rx_pkts": 4997001,
+ "time_ms": 1648514295209,
+ "drop_pct": 106894557,
+ "total_tx_pps": 11189155,
+ "tx_pps": 11748120,
+ "tx_pkts": 111891558,
+ "drop_percentage": 95.53406790528379
+ },
+ {
+ "rx_pps": 544892.1971034479,
+ "rx_pkts": 5414866,
+ "time_ms": 1648514307703,
+ "drop_pct": 52958603,
+ "total_tx_pps": 5837346,
+ "tx_pps": 5874060,
+ "tx_pkts": 58373469,
+ "drop_percentage": 90.72375499903903
+ },
+ {
+ "rx_pps": 1890962.4682001427,
+ "rx_pkts": 18793332,
+ "time_ms": 1648514320196,
+ "drop_pct": 10396343,
+ "total_tx_pps": 2918967,
+ "tx_pps": 2937030,
+ "tx_pkts": 29189675,
+ "drop_percentage": 35.61650823450415
+ },
+ {
+ "rx_pps": 1457857.666167266,
+ "rx_pkts": 14488922,
+ "time_ms": 1648514332694,
+ "drop_pct": 105908,
+ "total_tx_pps": 1459483,
+ "tx_pps": 1468514,
+ "tx_pkts": 14594830,
+ "drop_percentage": 0.7256542213920957
+ },
+ {
+ "rx_pps": 734180.9171085032,
+ "rx_pkts": 7304369,
+ "time_ms": 1648514345200,
+ "drop_pct": 747,
+ "total_tx_pps": 730511,
+ "tx_pps": 734256,
+ "tx_pkts": 7305116,
+ "drop_percentage": 0.010225710310418069
+ },
+ {
+ "rx_pps": 367128.0,
+ "rx_pkts": 3648705,
+ "time_ms": 1648514357697,
+ "drop_pct": 0,
+ "total_tx_pps": 364870,
+ "tx_pps": 367128,
+ "tx_pkts": 3648705,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 549710.0929020192,
+ "rx_pkts": 5462911,
+ "time_ms": 1648514370202,
+ "drop_pct": 9758,
+ "total_tx_pps": 547266,
+ "tx_pps": 550692,
+ "tx_pkts": 5472669,
+ "drop_percentage": 0.17830422413634006
+ },
+ {
+ "rx_pps": 458905.1702994093,
+ "rx_pkts": 4560831,
+ "time_ms": 1648514382706,
+ "drop_pct": 48,
+ "total_tx_pps": 456087,
+ "tx_pps": 458910,
+ "tx_pkts": 4560879,
+ "drop_percentage": 0.0010524287094658728
+ },
+ {
+ "rx_pps": 413018.0,
+ "rx_pkts": 4104780,
+ "time_ms": 1648514395211,
+ "drop_pct": 0,
+ "total_tx_pps": 410478,
+ "tx_pps": 413018,
+ "tx_pkts": 4104780,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 435770.00100064784,
+ "rx_pkts": 4335260,
+ "time_ms": 1648514407739,
+ "drop_pct": 1930,
+ "total_tx_pps": 433719,
+ "tx_pps": 435964,
+ "tx_pkts": 4337190,
+ "drop_percentage": 0.04449885755523738
+ },
+ {
+ "rx_pps": 424408.48645580024,
+ "rx_pkts": 4217987,
+ "time_ms": 1648514420241,
+ "drop_pct": 830,
+ "total_tx_pps": 421881,
+ "tx_pps": 424492,
+ "tx_pkts": 4218817,
+ "ndr_pps": 206509,
+ "drop_percentage": 0.019673761625593145
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 128,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "14a1559a15b240baba4ced0f0074e6b2"
+ },
+ "synthesis": {
+ "avg_delay_usec": 102.50042657584572,
+ "total_tx_rate": 410478
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_768-fc_128-rate_ndr-2.json",
+ "frame_sizes": [
+ "768"
+ ],
+ "rate": "ndr",
+ "flow_count": "128",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-29 00:50:01",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "8dd3beb2954d49b59cfca0b597a08ad2",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "768"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 128,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_768-fc_128-rate_ndr-2.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "768"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2519,
+ 2504
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_768-fc_128-rate_ndr-2.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "768": {
+ "ndr": {
+ "load_percent_per_direction": 5.46875,
+ "timestamp_sec": 1648515142.0455678,
+ "stats": {
+ "total_tx_rate": 431865,
+ "overall": {
+ "rx_pkts": 4318624,
+ "drop_percentage": 0.0006715056754965032,
+ "drop_pct": 29,
+ "max_delay_usec": 4023,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 4318653,
+ "avg_delay_usec": 116.9997614981068,
+ "min_delay_usec": 31,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 2159209,
+ "min_delay_usec": 31,
+ "drop_pct": 9,
+ "max_delay_usec": 2684,
+ "tx_pkts": 2159435,
+ "avg_delay_usec": 122,
+ "drop_percentage": 0.0004167756843804051
+ },
+ "0": {
+ "rx_pkts": 2159415,
+ "min_delay_usec": 31,
+ "drop_pct": 20,
+ "max_delay_usec": 4023,
+ "tx_pkts": 2159218,
+ "avg_delay_usec": 112,
+ "drop_percentage": 0.0009262612668104841
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 2722476960.0,
+ "theoretical_tx_rate_pps": 7931472.081218274
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 10.9375,
+ "duration_sec": 10.0,
+ "l2frame_size": "768",
+ "rate_pps": 433752,
+ "rate_bps": 2734375000.0,
+ "time_taken_sec": 137.69723057746887
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 1902578.374437825,
+ "rx_pkts": 18430452,
+ "time_ms": 1648515016843,
+ "drop_pct": 58402448,
+ "total_tx_pps": 7683290,
+ "tx_pps": 7931472,
+ "tx_pkts": 76832900,
+ "drop_percentage": 76.01229160945377
+ },
+ {
+ "rx_pps": 1725307.3463774815,
+ "rx_pkts": 17171122,
+ "time_ms": 1648515029432,
+ "drop_pct": 22297867,
+ "total_tx_pps": 3946898,
+ "tx_pps": 3965736,
+ "tx_pkts": 39468989,
+ "drop_percentage": 56.49464950825064
+ },
+ {
+ "rx_pps": 1801127.1402490556,
+ "rx_pkts": 17898703,
+ "time_ms": 1648515041929,
+ "drop_pct": 1806050,
+ "total_tx_pps": 1970475,
+ "tx_pps": 1982868,
+ "tx_pkts": 19704753,
+ "drop_percentage": 9.16555513281491
+ },
+ {
+ "rx_pps": 988562.2393063733,
+ "rx_pkts": 9824828,
+ "time_ms": 1648515054424,
+ "drop_pct": 28541,
+ "total_tx_pps": 985336,
+ "tx_pps": 991434,
+ "tx_pkts": 9853369,
+ "drop_percentage": 0.28965727356805576
+ },
+ {
+ "rx_pps": 495697.1842930203,
+ "rx_pkts": 4926489,
+ "time_ms": 1648515066934,
+ "drop_pct": 187,
+ "total_tx_pps": 492667,
+ "tx_pps": 495716,
+ "tx_pkts": 4926676,
+ "drop_percentage": 0.00379566263338608
+ },
+ {
+ "rx_pps": 247858.0,
+ "rx_pkts": 2463092,
+ "time_ms": 1648515079432,
+ "drop_pct": 0,
+ "total_tx_pps": 246309,
+ "tx_pps": 247858,
+ "tx_pkts": 2463092,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 371783.78616389656,
+ "rx_pkts": 3694602,
+ "time_ms": 1648515091948,
+ "drop_pct": 22,
+ "total_tx_pps": 369462,
+ "tx_pps": 371786,
+ "tx_pkts": 3694624,
+ "drop_percentage": 0.0005954597815636991
+ },
+ {
+ "rx_pps": 433749.0873307024,
+ "rx_pkts": 4318624,
+ "time_ms": 1648515104463,
+ "drop_pct": 29,
+ "total_tx_pps": 431865,
+ "tx_pps": 433752,
+ "tx_pkts": 4318653,
+ "drop_percentage": 0.0006715056754965032
+ },
+ {
+ "rx_pps": 463811.53496571037,
+ "rx_pkts": 4609129,
+ "time_ms": 1648515117017,
+ "drop_pct": 9167,
+ "total_tx_pps": 461829,
+ "tx_pps": 464734,
+ "tx_pkts": 4618296,
+ "drop_percentage": 0.19849312387079562
+ },
+ {
+ "rx_pps": 449083.4088627579,
+ "rx_pkts": 4462768,
+ "time_ms": 1648515129513,
+ "drop_pct": 1576,
+ "total_tx_pps": 446434,
+ "tx_pps": 449242,
+ "tx_pkts": 4464344,
+ "drop_percentage": 0.03530193909788314
+ },
+ {
+ "rx_pps": 441182.37132601463,
+ "rx_pkts": 4384693,
+ "time_ms": 1648515142044,
+ "drop_pct": 3117,
+ "total_tx_pps": 438781,
+ "tx_pps": 441496,
+ "tx_pkts": 4387810,
+ "ndr_pps": 216876,
+ "drop_percentage": 0.07103771585369467
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 128,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "8dd3beb2954d49b59cfca0b597a08ad2"
+ },
+ "synthesis": {
+ "avg_delay_usec": 116.9997614981068,
+ "total_tx_rate": 431865
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1024-fc_128-rate_ndr-2.json",
+ "frame_sizes": [
+ "1024"
+ ],
+ "rate": "ndr",
+ "flow_count": "128",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-29 00:52:26",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "75405003766f40e9b542c75124035b57",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "1024"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 128,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1024-fc_128-rate_ndr-0.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "1024"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2519,
+ 2504
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1024-fc_128-rate_ndr-0.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "1024": {
+ "ndr": {
+ "load_percent_per_direction": 6.73828125,
+ "timestamp_sec": 1648515286.889274,
+ "stats": {
+ "total_tx_rate": 401294,
+ "overall": {
+ "rx_pkts": 4012912,
+ "drop_percentage": 0.0008472578499685767,
+ "drop_pct": 34,
+ "max_delay_usec": 328,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 4012946,
+ "avg_delay_usec": 111.00076054496087,
+ "min_delay_usec": 34,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 2006238,
+ "min_delay_usec": 34,
+ "drop_pct": 34,
+ "max_delay_usec": 326,
+ "tx_pkts": 2006674,
+ "avg_delay_usec": 104,
+ "drop_percentage": 0.001694345967506431
+ },
+ "0": {
+ "rx_pkts": 2006674,
+ "min_delay_usec": 34,
+ "drop_pct": 0,
+ "max_delay_usec": 328,
+ "tx_pkts": 2006272,
+ "avg_delay_usec": 118,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 3351607488.0,
+ "theoretical_tx_rate_pps": 5986590.038314176
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 13.4765625,
+ "duration_sec": 10.0,
+ "l2frame_size": "1024",
+ "rate_pps": 403392,
+ "rate_bps": 3369140624.0,
+ "time_taken_sec": 137.79849529266357
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 1930795.241663838,
+ "rx_pkts": 18852856,
+ "time_ms": 1648515161575,
+ "drop_pct": 39601980,
+ "total_tx_pps": 5845483,
+ "tx_pps": 5986590,
+ "tx_pkts": 58454836,
+ "drop_percentage": 67.74799607683443
+ },
+ {
+ "rx_pps": 1762189.8584894312,
+ "rx_pkts": 17511764,
+ "time_ms": 1648515174131,
+ "drop_pct": 12234099,
+ "total_tx_pps": 2974586,
+ "tx_pps": 2993294,
+ "tx_pkts": 29745863,
+ "drop_percentage": 41.12874116309888
+ },
+ {
+ "rx_pps": 1462161.4284772114,
+ "rx_pkts": 14531695,
+ "time_ms": 1648515186630,
+ "drop_pct": 342725,
+ "total_tx_pps": 1487442,
+ "tx_pps": 1496646,
+ "tx_pkts": 14874420,
+ "drop_percentage": 2.3041234548977374
+ },
+ {
+ "rx_pps": 747018.4838640236,
+ "rx_pkts": 7424246,
+ "time_ms": 1648515199145,
+ "drop_pct": 12955,
+ "total_tx_pps": 743720,
+ "tx_pps": 748322,
+ "tx_pkts": 7437201,
+ "drop_percentage": 0.17419187675578487
+ },
+ {
+ "rx_pps": 374159.8993711233,
+ "rx_pkts": 3718216,
+ "time_ms": 1648515211671,
+ "drop_pct": 1,
+ "total_tx_pps": 371821,
+ "tx_pps": 374160,
+ "tx_pkts": 3718217,
+ "drop_percentage": 2.689461104610086e-05
+ },
+ {
+ "rx_pps": 560771.4296064666,
+ "rx_pkts": 5578275,
+ "time_ms": 1648515224196,
+ "drop_pct": 4681,
+ "total_tx_pps": 558295,
+ "tx_pps": 561242,
+ "tx_pkts": 5582956,
+ "drop_percentage": 0.0838444723547884
+ },
+ {
+ "rx_pps": 467650.58381987753,
+ "rx_pkts": 4647748,
+ "time_ms": 1648515236753,
+ "drop_pct": 511,
+ "total_tx_pps": 464825,
+ "tx_pps": 467702,
+ "tx_pkts": 4648259,
+ "drop_percentage": 0.010993363321622138
+ },
+ {
+ "rx_pps": 420590.6668502663,
+ "rx_pkts": 4179622,
+ "time_ms": 1648515249317,
+ "drop_pct": 3392,
+ "total_tx_pps": 418301,
+ "tx_pps": 420932,
+ "tx_pkts": 4183014,
+ "drop_percentage": 0.08108985530528943
+ },
+ {
+ "rx_pps": 397542.8805052174,
+ "rx_pkts": 3950585,
+ "time_ms": 1648515261830,
+ "drop_pct": 31,
+ "total_tx_pps": 395061,
+ "tx_pps": 397546,
+ "tx_pkts": 3950616,
+ "drop_percentage": 0.0007846877550235204
+ },
+ {
+ "rx_pps": 409151.5902254465,
+ "rx_pkts": 4067378,
+ "time_ms": 1648515274351,
+ "drop_pct": 859,
+ "total_tx_pps": 406823,
+ "tx_pps": 409238,
+ "tx_pkts": 4068237,
+ "drop_percentage": 0.02111479739258062
+ },
+ {
+ "rx_pps": 403388.5822296139,
+ "rx_pkts": 4012912,
+ "time_ms": 1648515286888,
+ "drop_pct": 34,
+ "total_tx_pps": 401294,
+ "tx_pps": 403392,
+ "tx_pkts": 4012946,
+ "ndr_pps": 201696,
+ "drop_percentage": 0.0008472578499685767
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 128,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "75405003766f40e9b542c75124035b57"
+ },
+ "synthesis": {
+ "avg_delay_usec": 111.00076054496087,
+ "total_tx_rate": 401294
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1280-fc_128-rate_ndr-2.json",
+ "frame_sizes": [
+ "1280"
+ ],
+ "rate": "ndr",
+ "flow_count": "128",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-29 00:59:40",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "f6fbe0374ea244fabde658db4f3248c1",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "1280"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 128,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1280-fc_128-rate_ndr-0.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "1280"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2519,
+ 2504
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1280-fc_128-rate_ndr-0.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "1280": {
+ "ndr": {
+ "load_percent_per_direction": 8.3984375,
+ "timestamp_sec": 1648515720.6989858,
+ "stats": {
+ "total_tx_rate": 401408,
+ "overall": {
+ "rx_pkts": 4014082,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 1461,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 4014082,
+ "avg_delay_usec": 129.00015096851533,
+ "min_delay_usec": 33,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 2006940,
+ "min_delay_usec": 36,
+ "drop_pct": 0,
+ "max_delay_usec": 615,
+ "tx_pkts": 2007142,
+ "avg_delay_usec": 126,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 2007142,
+ "min_delay_usec": 33,
+ "drop_pct": 0,
+ "max_delay_usec": 1461,
+ "tx_pkts": 2006940,
+ "avg_delay_usec": 132,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 4174643200.0,
+ "theoretical_tx_rate_pps": 4807692.307692308
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 16.796875,
+ "duration_sec": 10.0,
+ "l2frame_size": "1280",
+ "rate_pps": 403770,
+ "rate_bps": 4199218750.0,
+ "time_taken_sec": 137.7598237991333
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 1782209.6840959138,
+ "rx_pkts": 17492199,
+ "time_ms": 1648515595424,
+ "drop_pct": 29694788,
+ "total_tx_pps": 4718698,
+ "tx_pps": 4807692,
+ "tx_pkts": 47186987,
+ "drop_percentage": 62.93003619832731
+ },
+ {
+ "rx_pps": 1746211.0920846344,
+ "rx_pkts": 17352973,
+ "time_ms": 1648515608019,
+ "drop_pct": 6535247,
+ "total_tx_pps": 2388822,
+ "tx_pps": 2403846,
+ "tx_pkts": 23888220,
+ "drop_percentage": 27.357613920166507
+ },
+ {
+ "rx_pps": 1194285.0711804812,
+ "rx_pkts": 11868211,
+ "time_ms": 1648515620524,
+ "drop_pct": 75892,
+ "total_tx_pps": 1194410,
+ "tx_pps": 1201922,
+ "tx_pkts": 11944103,
+ "drop_percentage": 0.6353930470961276
+ },
+ {
+ "rx_pps": 600176.2805216585,
+ "rx_pkts": 5964855,
+ "time_ms": 1648515633020,
+ "drop_pct": 7789,
+ "total_tx_pps": 597264,
+ "tx_pps": 600960,
+ "tx_pkts": 5972644,
+ "drop_percentage": 0.13041125504885273
+ },
+ {
+ "rx_pps": 300480.0,
+ "rx_pkts": 2986022,
+ "time_ms": 1648515645545,
+ "drop_pct": 0,
+ "total_tx_pps": 298602,
+ "tx_pps": 300480,
+ "tx_pkts": 2986022,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 450690.71758913517,
+ "rx_pkts": 4478832,
+ "time_ms": 1648515658043,
+ "drop_pct": 291,
+ "total_tx_pps": 447912,
+ "tx_pps": 450720,
+ "tx_pkts": 4479123,
+ "drop_percentage": 0.006496807522365427
+ },
+ {
+ "rx_pps": 375598.59119610087,
+ "rx_pkts": 3732514,
+ "time_ms": 1648515670558,
+ "drop_pct": 14,
+ "total_tx_pps": 373252,
+ "tx_pps": 375600,
+ "tx_pkts": 3732528,
+ "drop_percentage": 0.0003750809103106527
+ },
+ {
+ "rx_pps": 413028.79315219715,
+ "rx_pkts": 4104889,
+ "time_ms": 1648515683111,
+ "drop_pct": 1304,
+ "total_tx_pps": 410619,
+ "tx_pps": 413160,
+ "tx_pkts": 4106193,
+ "drop_percentage": 0.03175690962407271
+ },
+ {
+ "rx_pps": 394380.0,
+ "rx_pkts": 3919155,
+ "time_ms": 1648515695623,
+ "drop_pct": 0,
+ "total_tx_pps": 391915,
+ "tx_pps": 394380,
+ "tx_pkts": 3919155,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 403770.0,
+ "rx_pkts": 4014082,
+ "time_ms": 1648515708195,
+ "drop_pct": 0,
+ "total_tx_pps": 401408,
+ "tx_pps": 403770,
+ "tx_pkts": 4014082,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 408041.4893278549,
+ "rx_pkts": 4055321,
+ "time_ms": 1648515720698,
+ "drop_pct": 4219,
+ "total_tx_pps": 405954,
+ "tx_pps": 408466,
+ "tx_pkts": 4059540,
+ "ndr_pps": 201885,
+ "drop_percentage": 0.10392803125477271
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 128,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "f6fbe0374ea244fabde658db4f3248c1"
+ },
+ "synthesis": {
+ "avg_delay_usec": 129.00015096851533,
+ "total_tx_rate": 401408
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1518-fc_128-rate_ndr-2.json",
+ "frame_sizes": [
+ "1518"
+ ],
+ "rate": "ndr",
+ "flow_count": "128",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-29 01:11:42",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "aa22a77595534177821bc1ddb05bf7d5",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "1518"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 128,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1518-fc_128-rate_ndr-2.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "1518"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2519,
+ 2504
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1518-fc_128-rate_ndr-2.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "1518": {
+ "ndr": {
+ "load_percent_per_direction": 10.3515625,
+ "timestamp_sec": 1648516442.9958127,
+ "stats": {
+ "total_tx_rate": 418029,
+ "overall": {
+ "rx_pkts": 4180291,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 614,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 4180291,
+ "avg_delay_usec": 133.0,
+ "min_delay_usec": 35,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 2090041,
+ "min_delay_usec": 35,
+ "drop_pct": 0,
+ "max_delay_usec": 614,
+ "tx_pkts": 2090250,
+ "avg_delay_usec": 133,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 2090250,
+ "min_delay_usec": 35,
+ "drop_pct": 0,
+ "max_delay_usec": 256,
+ "tx_pkts": 2090041,
+ "avg_delay_usec": 133,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 5143428816.0,
+ "theoretical_tx_rate_pps": 4063719.1157347206
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 20.703125,
+ "duration_sec": 10.0,
+ "l2frame_size": "1518",
+ "rate_pps": 420658,
+ "rate_bps": 5175781250.0,
+ "time_taken_sec": 137.71833491325378
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 1525365.0868388722,
+ "rx_pkts": 15001649,
+ "time_ms": 1648516317782,
+ "drop_pct": 24964174,
+ "total_tx_pps": 3996582,
+ "tx_pps": 4063718,
+ "tx_pkts": 39965823,
+ "drop_percentage": 62.46380563713151
+ },
+ {
+ "rx_pps": 1496120.4701008687,
+ "rx_pkts": 14867698,
+ "time_ms": 1648516330341,
+ "drop_pct": 5323892,
+ "total_tx_pps": 2019159,
+ "tx_pps": 2031858,
+ "tx_pkts": 20191590,
+ "drop_percentage": 26.36687848752872
+ },
+ {
+ "rx_pps": 1014361.6676065021,
+ "rx_pkts": 10081237,
+ "time_ms": 1648516342836,
+ "drop_pct": 15567,
+ "total_tx_pps": 1009680,
+ "tx_pps": 1015928,
+ "tx_pkts": 10096804,
+ "drop_percentage": 0.1541775001277632
+ },
+ {
+ "rx_pps": 507610.12378570484,
+ "rx_pkts": 5044885,
+ "time_ms": 1648516355360,
+ "drop_pct": 3517,
+ "total_tx_pps": 504840,
+ "tx_pps": 507964,
+ "tx_pkts": 5048402,
+ "drop_percentage": 0.06966560903826596
+ },
+ {
+ "rx_pps": 253982.0,
+ "rx_pkts": 2532329,
+ "time_ms": 1648516367908,
+ "drop_pct": 0,
+ "total_tx_pps": 253232,
+ "tx_pps": 253982,
+ "tx_pkts": 2532329,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 380972.0,
+ "rx_pkts": 3786292,
+ "time_ms": 1648516380404,
+ "drop_pct": 0,
+ "total_tx_pps": 378629,
+ "tx_pps": 380972,
+ "tx_pkts": 3786292,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 444318.68175264477,
+ "rx_pkts": 4415863,
+ "time_ms": 1648516392915,
+ "drop_pct": 1484,
+ "total_tx_pps": 441734,
+ "tx_pps": 444468,
+ "tx_pkts": 4417347,
+ "drop_percentage": 0.03359482512920085
+ },
+ {
+ "rx_pps": 412715.9748437487,
+ "rx_pkts": 4101366,
+ "time_ms": 1648516405442,
+ "drop_pct": 40,
+ "total_tx_pps": 410140,
+ "tx_pps": 412720,
+ "tx_pkts": 4101406,
+ "drop_percentage": 0.0009752753080285151
+ },
+ {
+ "rx_pps": 428567.63523947,
+ "rx_pkts": 4258894,
+ "time_ms": 1648516417960,
+ "drop_pct": 262,
+ "total_tx_pps": 425915,
+ "tx_pps": 428594,
+ "tx_pkts": 4259156,
+ "drop_percentage": 0.006151453480454813
+ },
+ {
+ "rx_pps": 420658.0,
+ "rx_pkts": 4180291,
+ "time_ms": 1648516430479,
+ "drop_pct": 0,
+ "total_tx_pps": 418029,
+ "tx_pps": 420658,
+ "tx_pkts": 4180291,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 424617.3467837369,
+ "rx_pkts": 4220060,
+ "time_ms": 1648516442994,
+ "drop_pct": 86,
+ "total_tx_pps": 422014,
+ "tx_pps": 424626,
+ "tx_pkts": 4220146,
+ "ndr_pps": 210329,
+ "drop_percentage": 0.0020378441883290295
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 128,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "aa22a77595534177821bc1ddb05bf7d5"
+ },
+ "synthesis": {
+ "avg_delay_usec": 133.0,
+ "total_tx_rate": 418029
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_IMIX-fc_128-rate_ndr-2.json",
+ "frame_sizes": [
+ "IMIX"
+ ],
+ "rate": "ndr",
+ "flow_count": "128",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-29 01:14:06",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "e3cbe4a347a44a80b2c84296b1c8d3cf",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "IMIX"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 128,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_IMIX-fc_128-rate_ndr-0.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "IMIX"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2519,
+ 2504
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_IMIX-fc_128-rate_ndr-0.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "IMIX": {
+ "ndr": {
+ "load_percent_per_direction": 3.125,
+ "timestamp_sec": 1648516587.0061436,
+ "stats": {
+ "total_tx_rate": 508366,
+ "overall": {
+ "rx_pkts": 5083660,
+ "drop_percentage": 9.835423852673218e-05,
+ "drop_pct": 5,
+ "max_delay_usec": 735,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 5083665,
+ "avg_delay_usec": 99.00010228850867,
+ "min_delay_usec": 32,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 2541700,
+ "min_delay_usec": 32,
+ "drop_pct": 5,
+ "max_delay_usec": 218,
+ "tx_pkts": 2541960,
+ "avg_delay_usec": 97,
+ "drop_percentage": 0.0001966986105210153
+ },
+ "0": {
+ "rx_pkts": 2541960,
+ "min_delay_usec": 32,
+ "drop_pct": 0,
+ "max_delay_usec": 735,
+ "tx_pkts": 2541705,
+ "avg_delay_usec": 101,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 1552888674.6666665,
+ "theoretical_tx_rate_pps": 16368398.079441292
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 6.25,
+ "duration_sec": 10.0,
+ "l2frame_size": "IMIX",
+ "rate_pps": 511512,
+ "rate_bps": 1562500000.0,
+ "time_taken_sec": 137.71221041679382
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 455021.45509677904,
+ "rx_pkts": 3962322,
+ "time_ms": 1648516461799,
+ "drop_pct": 138573514,
+ "total_tx_pps": 14253583,
+ "tx_pps": 16368398,
+ "tx_pkts": 142535836,
+ "warning": "WARNING: There is a significant difference between requested TX rate (16368398) and actual TX rate (14253583). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "drop_percentage": 97.22012224350374
+ },
+ {
+ "rx_pps": 368832.99054765597,
+ "rx_pkts": 3665647,
+ "time_ms": 1648516474296,
+ "drop_pct": 77673012,
+ "total_tx_pps": 8133865,
+ "tx_pps": 8184198,
+ "tx_pkts": 81338659,
+ "drop_percentage": 95.49335206030382
+ },
+ {
+ "rx_pps": 895765.8838221595,
+ "rx_pkts": 8911528,
+ "time_ms": 1648516486861,
+ "drop_pct": 31798714,
+ "total_tx_pps": 4071024,
+ "tx_pps": 4092098,
+ "tx_pkts": 40710242,
+ "drop_percentage": 78.10986237812097
+ },
+ {
+ "rx_pps": 1927743.5317661166,
+ "rx_pkts": 19156957,
+ "time_ms": 1648516499376,
+ "drop_pct": 1175651,
+ "total_tx_pps": 2033260,
+ "tx_pps": 2046048,
+ "tx_pkts": 20332608,
+ "drop_percentage": 5.782096423636358
+ },
+ {
+ "rx_pps": 1015634.8922179102,
+ "rx_pkts": 10093386,
+ "time_ms": 1648516511872,
+ "drop_pct": 73433,
+ "total_tx_pps": 1016681,
+ "tx_pps": 1023024,
+ "tx_pkts": 10166819,
+ "drop_percentage": 0.7222809809046468
+ },
+ {
+ "rx_pps": 511511.4969062674,
+ "rx_pkts": 5083660,
+ "time_ms": 1648516524370,
+ "drop_pct": 5,
+ "total_tx_pps": 508366,
+ "tx_pps": 511512,
+ "tx_pkts": 5083665,
+ "drop_percentage": 9.83542385267322e-05
+ },
+ {
+ "rx_pps": 764384.46739517,
+ "rx_pkts": 7596838,
+ "time_ms": 1648516536965,
+ "drop_pct": 28658,
+ "total_tx_pps": 762549,
+ "tx_pps": 767268,
+ "tx_pkts": 7625496,
+ "drop_percentage": 0.37581817628649994
+ },
+ {
+ "rx_pps": 638742.7197819274,
+ "rx_pkts": 6348150,
+ "time_ms": 1648516549474,
+ "drop_pct": 6433,
+ "total_tx_pps": 635458,
+ "tx_pps": 639390,
+ "tx_pkts": 6354583,
+ "drop_percentage": 0.1012340227517683
+ },
+ {
+ "rx_pps": 575150.7598381079,
+ "rx_pkts": 5716139,
+ "time_ms": 1648516561991,
+ "drop_pct": 2974,
+ "total_tx_pps": 571911,
+ "tx_pps": 575450,
+ "tx_pkts": 5719113,
+ "drop_percentage": 0.0520010707954188
+ },
+ {
+ "rx_pps": 543090.4042744632,
+ "rx_pkts": 5397508,
+ "time_ms": 1648516574506,
+ "drop_pct": 3872,
+ "total_tx_pps": 540138,
+ "tx_pps": 543480,
+ "tx_pkts": 5401380,
+ "drop_percentage": 0.0716853841055434
+ },
+ {
+ "rx_pps": 526619.007327005,
+ "rx_pkts": 5233808,
+ "time_ms": 1648516587005,
+ "drop_pct": 8716,
+ "total_tx_pps": 524252,
+ "tx_pps": 527496,
+ "tx_pkts": 5242524,
+ "ndr_pps": 255756,
+ "drop_percentage": 0.16625579587236988
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 128,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "e3cbe4a347a44a80b2c84296b1c8d3cf"
+ },
+ "synthesis": {
+ "avg_delay_usec": 99.00010228850867,
+ "total_tx_rate": 508366
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_9000-fc_128-rate_ndr-2.json",
+ "frame_sizes": [
+ "9000"
+ ],
+ "rate": "ndr",
+ "flow_count": "128",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-29 01:23:45",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "925d13e8fb154949ba8e787ba0a1729c",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "9000"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 128,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_9000-fc_128-rate_ndr-1.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "9000"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2519,
+ 2504
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_9000-fc_128-rate_ndr-1.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "9000": {
+ "ndr": {
+ "load_percent_per_direction": 38.57421875,
+ "timestamp_sec": 1648517165.4413407,
+ "stats": {
+ "total_tx_rate": 265611,
+ "overall": {
+ "rx_pkts": 2656117,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 7688,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 2656117,
+ "avg_delay_usec": 830.5011435866718,
+ "min_delay_usec": 66,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1327991,
+ "min_delay_usec": 67,
+ "drop_pct": 0,
+ "max_delay_usec": 7688,
+ "tx_pkts": 1328126,
+ "avg_delay_usec": 808,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 1328126,
+ "min_delay_usec": 66,
+ "drop_pct": 0,
+ "max_delay_usec": 7031,
+ "tx_pkts": 1327991,
+ "avg_delay_usec": 853,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 19166489760.0,
+ "theoretical_tx_rate_pps": 692904.6563192905
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 77.1484375,
+ "duration_sec": 10.0,
+ "l2frame_size": "9000",
+ "rate_pps": 267282,
+ "rate_bps": 19287109374.0,
+ "time_taken_sec": 137.70768356323242
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 276705.98480457405,
+ "rx_pkts": 2760287,
+ "time_ms": 1648517040238,
+ "drop_pct": 4151793,
+ "total_tx_pps": 691208,
+ "tx_pps": 692904,
+ "tx_pkts": 6912080,
+ "drop_percentage": 60.06575444728649
+ },
+ {
+ "rx_pps": 276650.0833531569,
+ "rx_pkts": 2749212,
+ "time_ms": 1648517052754,
+ "drop_pct": 693657,
+ "total_tx_pps": 344286,
+ "tx_pps": 346452,
+ "tx_pkts": 3442869,
+ "drop_percentage": 20.147644304793474
+ },
+ {
+ "rx_pps": 173226.0,
+ "rx_pkts": 1721435,
+ "time_ms": 1648517065249,
+ "drop_pct": 0,
+ "total_tx_pps": 172143,
+ "tx_pps": 173226,
+ "tx_pkts": 1721435,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 259838.0,
+ "rx_pkts": 2582402,
+ "time_ms": 1648517077745,
+ "drop_pct": 0,
+ "total_tx_pps": 258240,
+ "tx_pps": 259838,
+ "tx_pkts": 2582402,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 276923.8456588822,
+ "rx_pkts": 2751933,
+ "time_ms": 1648517090242,
+ "drop_pct": 260563,
+ "total_tx_pps": 301249,
+ "tx_pps": 303144,
+ "tx_pkts": 3012496,
+ "drop_percentage": 8.649405675559404
+ },
+ {
+ "rx_pps": 276921.0901351833,
+ "rx_pkts": 2752181,
+ "time_ms": 1648517102831,
+ "drop_pct": 45428,
+ "total_tx_pps": 279760,
+ "tx_pps": 281492,
+ "tx_pkts": 2797609,
+ "drop_percentage": 1.623815193617121
+ },
+ {
+ "rx_pps": 270625.96228536376,
+ "rx_pkts": 2689347,
+ "time_ms": 1648517115325,
+ "drop_pct": 378,
+ "total_tx_pps": 268972,
+ "tx_pps": 270664,
+ "tx_pkts": 2689725,
+ "drop_percentage": 0.014053481303850765
+ },
+ {
+ "rx_pps": 265251.6987348664,
+ "rx_pkts": 2641378,
+ "time_ms": 1648517127933,
+ "drop_pct": 3,
+ "total_tx_pps": 264138,
+ "tx_pps": 265252,
+ "tx_pkts": 2641381,
+ "drop_percentage": 0.00011357695084503144
+ },
+ {
+ "rx_pps": 267950.35221095104,
+ "rx_pkts": 2662760,
+ "time_ms": 1648517140447,
+ "drop_pct": 76,
+ "total_tx_pps": 266283,
+ "tx_pps": 267958,
+ "tx_pkts": 2662836,
+ "drop_percentage": 0.0028540999145272184
+ },
+ {
+ "rx_pps": 266604.0,
+ "rx_pkts": 2649380,
+ "time_ms": 1648517152942,
+ "drop_pct": 0,
+ "total_tx_pps": 264938,
+ "tx_pps": 266604,
+ "tx_pkts": 2649380,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 267282.0,
+ "rx_pkts": 2656117,
+ "time_ms": 1648517165440,
+ "drop_pct": 0,
+ "total_tx_pps": 265611,
+ "tx_pps": 267282,
+ "tx_pkts": 2656117,
+ "ndr_pps": 133641,
+ "drop_percentage": 0.0
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 128,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "925d13e8fb154949ba8e787ba0a1729c"
+ },
+ "synthesis": {
+ "avg_delay_usec": 830.5011435866718,
+ "total_tx_rate": 265611
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_64-fc_10k-rate_ndr-2.json",
+ "frame_sizes": [
+ "64"
+ ],
+ "rate": "ndr",
+ "flow_count": "10k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-29 01:33:26",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "0b4fd1e0bc074c0aa72dfedbb7e468e7",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "64"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 10000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_64-fc_10k-rate_ndr-2.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "64"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2519,
+ 2504
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_64-fc_10k-rate_ndr-2.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "64": {
+ "ndr": {
+ "load_percent_per_direction": 0.390625,
+ "timestamp_sec": 1648517749.4090943,
+ "stats": {
+ "total_tx_rate": 288883,
+ "overall": {
+ "rx_pkts": 2888837,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 6981,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 2888837,
+ "avg_delay_usec": 137.00045173888316,
+ "min_delay_usec": 32,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1444346,
+ "min_delay_usec": 32,
+ "drop_pct": 0,
+ "max_delay_usec": 1012,
+ "tx_pkts": 1444491,
+ "avg_delay_usec": 128,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 1444491,
+ "min_delay_usec": 34,
+ "drop_pct": 0,
+ "max_delay_usec": 6981,
+ "tx_pkts": 1444346,
+ "avg_delay_usec": 146,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 194129376.0,
+ "theoretical_tx_rate_pps": 74404761.90476191
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 0.78125,
+ "duration_sec": 10.0,
+ "l2frame_size": "64",
+ "rate_pps": 290642,
+ "rate_bps": 195312500.0,
+ "time_taken_sec": 137.5828468799591
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 2047350.5854726303,
+ "rx_pkts": 11677335,
+ "time_ms": 1648517624315,
+ "drop_pct": 412700060,
+ "total_tx_pps": 42437739,
+ "tx_pps": 74404760,
+ "tx_pkts": 424377395,
+ "warning": "WARNING: There is a significant difference between requested TX rate (74404760) and actual TX rate (42437739). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "drop_percentage": 97.24836074268282
+ },
+ {
+ "rx_pps": 1881821.855161189,
+ "rx_pkts": 18700581,
+ "time_ms": 1648517636807,
+ "drop_pct": 350997602,
+ "total_tx_pps": 36969818,
+ "tx_pps": 37202380,
+ "tx_pkts": 369698183,
+ "drop_percentage": 94.94166272383329
+ },
+ {
+ "rx_pps": 1463366.1136056492,
+ "rx_pkts": 14543665,
+ "time_ms": 1648517649302,
+ "drop_pct": 170324273,
+ "total_tx_pps": 18486793,
+ "tx_pps": 18601190,
+ "tx_pkts": 184867938,
+ "drop_percentage": 92.13294357185939
+ },
+ {
+ "rx_pps": 656372.1947024872,
+ "rx_pkts": 6523357,
+ "time_ms": 1648517661819,
+ "drop_pct": 85910624,
+ "total_tx_pps": 9243398,
+ "tx_pps": 9300594,
+ "tx_pkts": 92433981,
+ "drop_percentage": 92.94268522308911
+ },
+ {
+ "rx_pps": 599368.4857455855,
+ "rx_pkts": 5963417,
+ "time_ms": 1648517674327,
+ "drop_pct": 40304705,
+ "total_tx_pps": 4626812,
+ "tx_pps": 4650296,
+ "tx_pkts": 46268122,
+ "drop_percentage": 87.11117559515382
+ },
+ {
+ "rx_pps": 1877894.057540158,
+ "rx_pkts": 18663453,
+ "time_ms": 1648517686824,
+ "drop_pct": 4445034,
+ "total_tx_pps": 2310848,
+ "tx_pps": 2325148,
+ "tx_pkts": 23108487,
+ "drop_percentage": 19.235504254346033
+ },
+ {
+ "rx_pps": 1160361.5937588983,
+ "rx_pkts": 11532254,
+ "time_ms": 1648517699350,
+ "drop_pct": 21988,
+ "total_tx_pps": 1155424,
+ "tx_pps": 1162574,
+ "tx_pkts": 11554242,
+ "drop_percentage": 0.19030240149029248
+ },
+ {
+ "rx_pps": 580852.4675486998,
+ "rx_pkts": 5778614,
+ "time_ms": 1648517711861,
+ "drop_pct": 4313,
+ "total_tx_pps": 578292,
+ "tx_pps": 581286,
+ "tx_pkts": 5782927,
+ "drop_percentage": 0.07458160893263913
+ },
+ {
+ "rx_pps": 290642.0,
+ "rx_pkts": 2888837,
+ "time_ms": 1648517724365,
+ "drop_pct": 0,
+ "total_tx_pps": 288883,
+ "tx_pps": 290642,
+ "tx_pkts": 2888837,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 435844.4649357429,
+ "rx_pkts": 4331643,
+ "time_ms": 1648517736892,
+ "drop_pct": 1188,
+ "total_tx_pps": 433283,
+ "tx_pps": 435964,
+ "tx_pkts": 4332831,
+ "drop_percentage": 0.027418563059579293
+ },
+ {
+ "rx_pps": 363213.11655764753,
+ "rx_pkts": 3616807,
+ "time_ms": 1648517749408,
+ "drop_pct": 905,
+ "total_tx_pps": 361771,
+ "tx_pps": 363304,
+ "tx_pkts": 3617712,
+ "ndr_pps": 145321,
+ "drop_percentage": 0.025015811098285327
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 10000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "0b4fd1e0bc074c0aa72dfedbb7e468e7"
+ },
+ "synthesis": {
+ "avg_delay_usec": 137.00045173888316,
+ "total_tx_rate": 288883
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_128-fc_10k-rate_ndr-2.json",
+ "frame_sizes": [
+ "128"
+ ],
+ "rate": "ndr",
+ "flow_count": "10k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-29 01:35:53",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "e4caccec03ec4be698325c5827dab2bf",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "128"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 10000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_128-fc_10k-rate_ndr-0.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "128"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2519,
+ 2504
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_128-fc_10k-rate_ndr-0.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "128": {
+ "ndr": {
+ "load_percent_per_direction": 0.87890625,
+ "timestamp_sec": 1648517895.4561322,
+ "stats": {
+ "total_tx_rate": 368857,
+ "overall": {
+ "rx_pkts": 3688572,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 1614,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 3688572,
+ "avg_delay_usec": 103.5,
+ "min_delay_usec": 30,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1844286,
+ "min_delay_usec": 32,
+ "drop_pct": 0,
+ "max_delay_usec": 1614,
+ "tx_pkts": 1844286,
+ "avg_delay_usec": 111,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 1844286,
+ "min_delay_usec": 30,
+ "drop_pct": 0,
+ "max_delay_usec": 224,
+ "tx_pkts": 1844286,
+ "avg_delay_usec": 96,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 436726688.0,
+ "theoretical_tx_rate_pps": 42229729.72972973
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 1.7578125,
+ "duration_sec": 10.0,
+ "l2frame_size": "128",
+ "rate_pps": 371158,
+ "rate_bps": 439453124.0,
+ "time_taken_sec": 137.57411217689514
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 661956.5610575142,
+ "rx_pkts": 6065560,
+ "time_ms": 1648517770397,
+ "drop_pct": 380888757,
+ "total_tx_pps": 38695431,
+ "tx_pps": 42229728,
+ "tx_pkts": 386954317,
+ "drop_percentage": 98.43248679921047
+ },
+ {
+ "rx_pps": 567627.3405718297,
+ "rx_pkts": 5641365,
+ "time_ms": 1648517782894,
+ "drop_pct": 204208736,
+ "total_tx_pps": 20985010,
+ "tx_pps": 21114864,
+ "tx_pkts": 209850101,
+ "drop_percentage": 97.31171680493973
+ },
+ {
+ "rx_pps": 513718.6314666125,
+ "rx_pkts": 5105078,
+ "time_ms": 1648517795390,
+ "drop_pct": 99809384,
+ "total_tx_pps": 10491446,
+ "tx_pps": 10557432,
+ "tx_pkts": 104914462,
+ "drop_percentage": 95.13405692343922
+ },
+ {
+ "rx_pps": 505008.19312182645,
+ "rx_pkts": 5018722,
+ "time_ms": 1648517807887,
+ "drop_pct": 47440641,
+ "total_tx_pps": 5245936,
+ "tx_pps": 5278716,
+ "tx_pkts": 52459363,
+ "drop_percentage": 90.4331243976409
+ },
+ {
+ "rx_pps": 1941280.9663658948,
+ "rx_pkts": 19293422,
+ "time_ms": 1648517820385,
+ "drop_pct": 6937839,
+ "total_tx_pps": 2623126,
+ "tx_pps": 2639358,
+ "tx_pkts": 26231261,
+ "drop_percentage": 26.448743733669534
+ },
+ {
+ "rx_pps": 1314375.0871652274,
+ "rx_pkts": 13062917,
+ "time_ms": 1648517832902,
+ "drop_pct": 52703,
+ "total_tx_pps": 1311562,
+ "tx_pps": 1319678,
+ "tx_pkts": 13115620,
+ "drop_percentage": 0.4018338439204551
+ },
+ {
+ "rx_pps": 659815.2578716066,
+ "rx_pkts": 6556917,
+ "time_ms": 1648517845416,
+ "drop_pct": 226,
+ "total_tx_pps": 655714,
+ "tx_pps": 659838,
+ "tx_pkts": 6557143,
+ "drop_percentage": 0.003446623018592091
+ },
+ {
+ "rx_pps": 329918.0,
+ "rx_pkts": 3278728,
+ "time_ms": 1648517857923,
+ "drop_pct": 0,
+ "total_tx_pps": 327872,
+ "tx_pps": 329918,
+ "tx_pkts": 3278728,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 494566.5692195298,
+ "rx_pkts": 4915004,
+ "time_ms": 1648517870430,
+ "drop_pct": 3095,
+ "total_tx_pps": 491809,
+ "tx_pps": 494878,
+ "tx_pkts": 4918099,
+ "drop_percentage": 0.06293081940806804
+ },
+ {
+ "rx_pps": 412387.6352223387,
+ "rx_pkts": 4098103,
+ "time_ms": 1648517882937,
+ "drop_pct": 103,
+ "total_tx_pps": 409820,
+ "tx_pps": 412398,
+ "tx_pkts": 4098206,
+ "drop_percentage": 0.0025132948416941464
+ },
+ {
+ "rx_pps": 371158.0,
+ "rx_pkts": 3688572,
+ "time_ms": 1648517895455,
+ "drop_pct": 0,
+ "total_tx_pps": 368857,
+ "tx_pps": 371158,
+ "tx_pkts": 3688572,
+ "ndr_pps": 185579,
+ "drop_percentage": 0.0
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 10000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "e4caccec03ec4be698325c5827dab2bf"
+ },
+ "synthesis": {
+ "avg_delay_usec": 103.5,
+ "total_tx_rate": 368857
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_256-fc_10k-rate_ndr-2.json",
+ "frame_sizes": [
+ "256"
+ ],
+ "rate": "ndr",
+ "flow_count": "10k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-29 01:48:05",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "ee681f4905724c8286ee3b3d00a51486",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "256"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 10000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_256-fc_10k-rate_ndr-2.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "256"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2519,
+ 2504
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_256-fc_10k-rate_ndr-2.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "256": {
+ "ndr": {
+ "load_percent_per_direction": 1.66015625,
+ "timestamp_sec": 1648518627.9241369,
+ "stats": {
+ "total_tx_rate": 373628,
+ "overall": {
+ "rx_pkts": 3736281,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 4593,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 3736281,
+ "avg_delay_usec": 95.50017517419059,
+ "min_delay_usec": 28,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1868047,
+ "min_delay_usec": 31,
+ "drop_pct": 0,
+ "max_delay_usec": 4593,
+ "tx_pkts": 1868234,
+ "avg_delay_usec": 92,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 1868234,
+ "min_delay_usec": 28,
+ "drop_pct": 0,
+ "max_delay_usec": 3016,
+ "tx_pkts": 1868047,
+ "avg_delay_usec": 99,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 824970624.0,
+ "theoretical_tx_rate_pps": 22644927.536231883
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 3.3203125,
+ "duration_sec": 10.0,
+ "l2frame_size": "256",
+ "rate_pps": 375940,
+ "rate_bps": 830078124.0,
+ "time_taken_sec": 137.58922338485718
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 501930.18889277824,
+ "rx_pkts": 4559930,
+ "time_ms": 1648518502852,
+ "drop_pct": 201164451,
+ "total_tx_pps": 20572438,
+ "tx_pps": 22644926,
+ "tx_pkts": 205724381,
+ "drop_percentage": 97.78347613548051
+ },
+ {
+ "rx_pps": 504259.6138228798,
+ "rx_pkts": 5011082,
+ "time_ms": 1648518515348,
+ "drop_pct": 107505931,
+ "total_tx_pps": 11251701,
+ "tx_pps": 11322462,
+ "tx_pkts": 112517013,
+ "drop_percentage": 95.54637839523878
+ },
+ {
+ "rx_pps": 508840.8943619289,
+ "rx_pkts": 5056862,
+ "time_ms": 1648518527848,
+ "drop_pct": 51204455,
+ "total_tx_pps": 5626131,
+ "tx_pps": 5661230,
+ "tx_pkts": 56261317,
+ "drop_percentage": 91.0118314507284
+ },
+ {
+ "rx_pps": 2110054.1102349525,
+ "rx_pkts": 20968663,
+ "time_ms": 1648518540374,
+ "drop_pct": 7160564,
+ "total_tx_pps": 2812922,
+ "tx_pps": 2830614,
+ "tx_pkts": 28129227,
+ "drop_percentage": 25.45595725044275
+ },
+ {
+ "rx_pps": 1401072.2638491914,
+ "rx_pkts": 13924558,
+ "time_ms": 1648518552869,
+ "drop_pct": 141462,
+ "total_tx_pps": 1406602,
+ "tx_pps": 1415306,
+ "tx_pkts": 14066020,
+ "drop_percentage": 1.0057002620499615
+ },
+ {
+ "rx_pps": 707351.0491778756,
+ "rx_pkts": 7030009,
+ "time_ms": 1648518565377,
+ "drop_pct": 2991,
+ "total_tx_pps": 703300,
+ "tx_pps": 707652,
+ "tx_pkts": 7033000,
+ "drop_percentage": 0.04252808189961609
+ },
+ {
+ "rx_pps": 353826.0,
+ "rx_pkts": 3516148,
+ "time_ms": 1648518577896,
+ "drop_pct": 0,
+ "total_tx_pps": 351614,
+ "tx_pps": 353826,
+ "tx_pkts": 3516148,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 530715.4490277573,
+ "rx_pkts": 5274519,
+ "time_ms": 1648518590390,
+ "drop_pct": 244,
+ "total_tx_pps": 527476,
+ "tx_pps": 530740,
+ "tx_pkts": 5274763,
+ "drop_percentage": 0.004625800249224468
+ },
+ {
+ "rx_pps": 442276.26473113475,
+ "rx_pkts": 4395565,
+ "time_ms": 1648518602909,
+ "drop_pct": 57,
+ "total_tx_pps": 439562,
+ "tx_pps": 442282,
+ "tx_pkts": 4395622,
+ "drop_percentage": 0.0012967448065370499
+ },
+ {
+ "rx_pps": 397842.9019229471,
+ "rx_pkts": 3953965,
+ "time_ms": 1648518615425,
+ "drop_pct": 2098,
+ "total_tx_pps": 395606,
+ "tx_pps": 398054,
+ "tx_pkts": 3956063,
+ "drop_percentage": 0.053032522485107036
+ },
+ {
+ "rx_pps": 375940.0,
+ "rx_pkts": 3736281,
+ "time_ms": 1648518627923,
+ "drop_pct": 0,
+ "total_tx_pps": 373628,
+ "tx_pps": 375940,
+ "tx_pkts": 3736281,
+ "ndr_pps": 187970,
+ "drop_percentage": 0.0
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 10000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "ee681f4905724c8286ee3b3d00a51486"
+ },
+ "synthesis": {
+ "avg_delay_usec": 95.50017517419059,
+ "total_tx_rate": 373628
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_512-fc_10k-rate_ndr-2.json",
+ "frame_sizes": [
+ "512"
+ ],
+ "rate": "ndr",
+ "flow_count": "10k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-29 01:52:58",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "b053f4a4365e4c55832ccb06c7c724b9",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "512"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 10000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_512-fc_10k-rate_ndr-1.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "512"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2519,
+ 2504
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_512-fc_10k-rate_ndr-1.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "512": {
+ "ndr": {
+ "load_percent_per_direction": 3.7109375,
+ "timestamp_sec": 1648518920.992039,
+ "stats": {
+ "total_tx_rate": 433239,
+ "overall": {
+ "rx_pkts": 4332356,
+ "drop_percentage": 0.0009232766349151833,
+ "drop_pct": 40,
+ "max_delay_usec": 1014,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 4332396,
+ "avg_delay_usec": 101.0000410861896,
+ "min_delay_usec": 32,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 2166089,
+ "min_delay_usec": 32,
+ "drop_pct": 0,
+ "max_delay_usec": 479,
+ "tx_pkts": 2166307,
+ "avg_delay_usec": 100,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 2166267,
+ "min_delay_usec": 32,
+ "drop_pct": 40,
+ "max_delay_usec": 1014,
+ "tx_pkts": 2166089,
+ "avg_delay_usec": 102,
+ "drop_percentage": 0.0018466461904381585
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 1843865184.0,
+ "theoretical_tx_rate_pps": 11748120.30075188
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 7.421875,
+ "duration_sec": 10.0,
+ "l2frame_size": "512",
+ "rate_pps": 435964,
+ "rate_bps": 1855468750.0,
+ "time_taken_sec": 137.70669722557068
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 446864.20539699425,
+ "rx_pkts": 4242076,
+ "time_ms": 1648518795780,
+ "drop_pct": 107282672,
+ "total_tx_pps": 11152474,
+ "tx_pps": 11748120,
+ "tx_pkts": 111524748,
+ "drop_percentage": 96.19629178628585
+ },
+ {
+ "rx_pps": 453288.54645233817,
+ "rx_pkts": 4513168,
+ "time_ms": 1648518808397,
+ "drop_pct": 53971918,
+ "total_tx_pps": 5848508,
+ "tx_pps": 5874060,
+ "tx_pkts": 58485086,
+ "drop_percentage": 92.28321558764571
+ },
+ {
+ "rx_pps": 1908433.4598655603,
+ "rx_pkts": 18965061,
+ "time_ms": 1648518820891,
+ "drop_pct": 10221680,
+ "total_tx_pps": 2918674,
+ "tx_pps": 2937030,
+ "tx_pkts": 29186741,
+ "drop_percentage": 35.0216558950518
+ },
+ {
+ "rx_pps": 1449595.552333988,
+ "rx_pkts": 14406806,
+ "time_ms": 1648518833387,
+ "drop_pct": 188021,
+ "total_tx_pps": 1459482,
+ "tx_pps": 1468514,
+ "tx_pkts": 14594827,
+ "drop_percentage": 1.2882715225058852
+ },
+ {
+ "rx_pps": 733549.2536779855,
+ "rx_pkts": 7290381,
+ "time_ms": 1648518845904,
+ "drop_pct": 7024,
+ "total_tx_pps": 729740,
+ "tx_pps": 734256,
+ "tx_pkts": 7297405,
+ "drop_percentage": 0.09625339418601545
+ },
+ {
+ "rx_pps": 367128.0,
+ "rx_pkts": 3648336,
+ "time_ms": 1648518858416,
+ "drop_pct": 0,
+ "total_tx_pps": 364833,
+ "tx_pps": 367128,
+ "tx_pkts": 3648336,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 550658.6029747013,
+ "rx_pkts": 5474100,
+ "time_ms": 1648518870921,
+ "drop_pct": 332,
+ "total_tx_pps": 547443,
+ "tx_pps": 550692,
+ "tx_pkts": 5474432,
+ "drop_percentage": 0.0060645561037199845
+ },
+ {
+ "rx_pps": 458889.171916203,
+ "rx_pkts": 4560672,
+ "time_ms": 1648518883444,
+ "drop_pct": 207,
+ "total_tx_pps": 456087,
+ "tx_pps": 458910,
+ "tx_pkts": 4560879,
+ "drop_percentage": 0.004538598809571576
+ },
+ {
+ "rx_pps": 413014.7801994796,
+ "rx_pkts": 4104749,
+ "time_ms": 1648518895947,
+ "drop_pct": 32,
+ "total_tx_pps": 410478,
+ "tx_pps": 413018,
+ "tx_pkts": 4104781,
+ "drop_percentage": 0.0007795787400107339
+ },
+ {
+ "rx_pps": 435959.9748462513,
+ "rx_pkts": 4332356,
+ "time_ms": 1648518908443,
+ "drop_pct": 40,
+ "total_tx_pps": 433239,
+ "tx_pps": 435964,
+ "tx_pkts": 4332396,
+ "drop_percentage": 0.0009232766349151831
+ },
+ {
+ "rx_pps": 447372.79906432977,
+ "rx_pkts": 4446218,
+ "time_ms": 1648518920991,
+ "drop_pct": 648,
+ "total_tx_pps": 444686,
+ "tx_pps": 447438,
+ "tx_pkts": 4446866,
+ "ndr_pps": 217982,
+ "drop_percentage": 0.01457206041288404
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 10000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "b053f4a4365e4c55832ccb06c7c724b9"
+ },
+ "synthesis": {
+ "avg_delay_usec": 101.0000410861896,
+ "total_tx_rate": 433239
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_768-fc_10k-rate_ndr-2.json",
+ "frame_sizes": [
+ "768"
+ ],
+ "rate": "ndr",
+ "flow_count": "10k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-29 02:00:18",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "a2cda8a229d34cc78999eccf910d02ea",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "768"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 10000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_768-fc_10k-rate_ndr-1.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "768"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2519,
+ 2504
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_768-fc_10k-rate_ndr-1.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "768": {
+ "ndr": {
+ "load_percent_per_direction": 6.25,
+ "timestamp_sec": 1648519360.7870374,
+ "stats": {
+ "total_tx_rate": 492618,
+ "overall": {
+ "rx_pkts": 4926143,
+ "drop_percentage": 0.0007510890791647889,
+ "drop_pct": 37,
+ "max_delay_usec": 1171,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 4926180,
+ "avg_delay_usec": 100.00029982889251,
+ "min_delay_usec": 31,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 2462966,
+ "min_delay_usec": 31,
+ "drop_pct": 0,
+ "max_delay_usec": 245,
+ "tx_pkts": 2463214,
+ "avg_delay_usec": 93,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 2463177,
+ "min_delay_usec": 36,
+ "drop_pct": 37,
+ "max_delay_usec": 1171,
+ "tx_pkts": 2462966,
+ "avg_delay_usec": 107,
+ "drop_percentage": 0.0015022537866945787
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 3105463872.0,
+ "theoretical_tx_rate_pps": 7931472.081218274
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 12.5,
+ "duration_sec": 10.0,
+ "l2frame_size": "768",
+ "rate_pps": 495716,
+ "rate_bps": 3125000000.0,
+ "time_taken_sec": 137.70255613327026
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 1843706.9440757327,
+ "rx_pkts": 17791743,
+ "time_ms": 1648519235591,
+ "drop_pct": 58746837,
+ "total_tx_pps": 7653858,
+ "tx_pps": 7931472,
+ "tx_pkts": 76538580,
+ "drop_percentage": 76.75454261105968
+ },
+ {
+ "rx_pps": 1698570.5446705262,
+ "rx_pkts": 16879548,
+ "time_ms": 1648519248098,
+ "drop_pct": 22529961,
+ "total_tx_pps": 3940950,
+ "tx_pps": 3965736,
+ "tx_pkts": 39409509,
+ "drop_percentage": 57.168844706996985
+ },
+ {
+ "rx_pps": 1646922.9614271468,
+ "rx_pkts": 16367945,
+ "time_ms": 1648519260593,
+ "drop_pct": 3338790,
+ "total_tx_pps": 1970673,
+ "tx_pps": 1982868,
+ "tx_pkts": 19706735,
+ "drop_percentage": 16.942380358796118
+ },
+ {
+ "rx_pps": 990847.8365151717,
+ "rx_pkts": 9846551,
+ "time_ms": 1648519273128,
+ "drop_pct": 5825,
+ "total_tx_pps": 985237,
+ "tx_pps": 991434,
+ "tx_pkts": 9852376,
+ "drop_percentage": 0.0591227943391523
+ },
+ {
+ "rx_pps": 495712.27673126035,
+ "rx_pkts": 4926143,
+ "time_ms": 1648519285633,
+ "drop_pct": 37,
+ "total_tx_pps": 492618,
+ "tx_pps": 495716,
+ "tx_pkts": 4926180,
+ "drop_percentage": 0.0007510890791647889
+ },
+ {
+ "rx_pps": 742526.9561696775,
+ "rx_pkts": 7378863,
+ "time_ms": 1648519298137,
+ "drop_pct": 10405,
+ "total_tx_pps": 738926,
+ "tx_pps": 743574,
+ "tx_pkts": 7389268,
+ "drop_percentage": 0.14081232403534424
+ },
+ {
+ "rx_pps": 619264.736291264,
+ "rx_pkts": 6154255,
+ "time_ms": 1648519310675,
+ "drop_pct": 3789,
+ "total_tx_pps": 615804,
+ "tx_pps": 619646,
+ "tx_pkts": 6158044,
+ "drop_percentage": 0.061529277803146584
+ },
+ {
+ "rx_pps": 557659.6729669784,
+ "rx_pkts": 5541746,
+ "time_ms": 1648519323177,
+ "drop_pct": 202,
+ "total_tx_pps": 554194,
+ "tx_pps": 557680,
+ "tx_pkts": 5541948,
+ "drop_percentage": 0.0036449277402097603
+ },
+ {
+ "rx_pps": 526580.6667255119,
+ "rx_pkts": 5232898,
+ "time_ms": 1648519335711,
+ "drop_pct": 1166,
+ "total_tx_pps": 523406,
+ "tx_pps": 526698,
+ "tx_pkts": 5234064,
+ "drop_percentage": 0.022277144490399813
+ },
+ {
+ "rx_pps": 511050.9183162957,
+ "rx_pkts": 5078571,
+ "time_ms": 1648519348208,
+ "drop_pct": 1561,
+ "total_tx_pps": 508013,
+ "tx_pps": 511208,
+ "tx_pkts": 5080132,
+ "drop_percentage": 0.030727548024342674
+ },
+ {
+ "rx_pps": 503409.6729808145,
+ "rx_pkts": 5002636,
+ "time_ms": 1648519360786,
+ "drop_pct": 520,
+ "total_tx_pps": 500315,
+ "tx_pps": 503462,
+ "tx_pkts": 5003156,
+ "ndr_pps": 247858,
+ "drop_percentage": 0.010393439660886048
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 10000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "a2cda8a229d34cc78999eccf910d02ea"
+ },
+ "synthesis": {
+ "avg_delay_usec": 100.00029982889251,
+ "total_tx_rate": 492618
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1024-fc_10k-rate_ndr-2.json",
+ "frame_sizes": [
+ "1024"
+ ],
+ "rate": "ndr",
+ "flow_count": "10k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-29 02:05:11",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "fc9128efed9440d785de14f69b0676de",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "1024"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 10000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1024-fc_10k-rate_ndr-0.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "1024"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2519,
+ 2504
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1024-fc_10k-rate_ndr-0.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "1024": {
+ "ndr": {
+ "load_percent_per_direction": 6.15234375,
+ "timestamp_sec": 1648519653.779957,
+ "stats": {
+ "total_tx_rate": 366012,
+ "overall": {
+ "rx_pkts": 3660123,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 2524,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 3660123,
+ "avg_delay_usec": 137.0001010894989,
+ "min_delay_usec": 33,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1829969,
+ "min_delay_usec": 39,
+ "drop_pct": 0,
+ "max_delay_usec": 968,
+ "tx_pkts": 1830154,
+ "avg_delay_usec": 135,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 1830154,
+ "min_delay_usec": 33,
+ "drop_pct": 0,
+ "max_delay_usec": 2524,
+ "tx_pkts": 1829969,
+ "avg_delay_usec": 139,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 3056932224.0,
+ "theoretical_tx_rate_pps": 5986590.038314176
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 12.3046875,
+ "duration_sec": 10.0,
+ "l2frame_size": "1024",
+ "rate_pps": 368314,
+ "rate_bps": 3076171874.0,
+ "time_taken_sec": 137.631765127182
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 1700403.2178862838,
+ "rx_pkts": 16546247,
+ "time_ms": 1648519528631,
+ "drop_pct": 41707934,
+ "total_tx_pps": 5825418,
+ "tx_pps": 5986590,
+ "tx_pkts": 58254181,
+ "drop_percentage": 71.59646446664489
+ },
+ {
+ "rx_pps": 1777997.9131810525,
+ "rx_pkts": 17668853,
+ "time_ms": 1648519541226,
+ "drop_pct": 12077004,
+ "total_tx_pps": 2974585,
+ "tx_pps": 2993294,
+ "tx_pkts": 29745857,
+ "drop_percentage": 40.60062549214837
+ },
+ {
+ "rx_pps": 1465627.2355720846,
+ "rx_pkts": 14564672,
+ "time_ms": 1648519553730,
+ "drop_pct": 308249,
+ "total_tx_pps": 1487292,
+ "tx_pps": 1496646,
+ "tx_pkts": 14872921,
+ "drop_percentage": 2.072551854474316
+ },
+ {
+ "rx_pps": 747534.5177112543,
+ "rx_pkts": 7428999,
+ "time_ms": 1648519566245,
+ "drop_pct": 7826,
+ "total_tx_pps": 743682,
+ "tx_pps": 748322,
+ "tx_pkts": 7436825,
+ "drop_percentage": 0.10523307997700632
+ },
+ {
+ "rx_pps": 374133.28379134706,
+ "rx_pkts": 3725059,
+ "time_ms": 1648519578761,
+ "drop_pct": 266,
+ "total_tx_pps": 372532,
+ "tx_pps": 374160,
+ "tx_pkts": 3725325,
+ "drop_percentage": 0.007140316616671028
+ },
+ {
+ "rx_pps": 187080.0,
+ "rx_pkts": 1859296,
+ "time_ms": 1648519591256,
+ "drop_pct": 0,
+ "total_tx_pps": 185929,
+ "tx_pps": 187080,
+ "tx_pkts": 1859296,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 280620.0,
+ "rx_pkts": 2788944,
+ "time_ms": 1648519603755,
+ "drop_pct": 0,
+ "total_tx_pps": 278894,
+ "tx_pps": 280620,
+ "tx_pkts": 2788944,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 327386.98143813567,
+ "rx_pkts": 3253738,
+ "time_ms": 1648519616247,
+ "drop_pct": 30,
+ "total_tx_pps": 325376,
+ "tx_pps": 327390,
+ "tx_pkts": 3253768,
+ "drop_percentage": 0.0009220079612314092
+ },
+ {
+ "rx_pps": 350776.0,
+ "rx_pkts": 3485838,
+ "time_ms": 1648519628760,
+ "drop_pct": 0,
+ "total_tx_pps": 348583,
+ "tx_pps": 350776,
+ "tx_pkts": 3485838,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 362468.0,
+ "rx_pkts": 3602027,
+ "time_ms": 1648519641273,
+ "drop_pct": 0,
+ "total_tx_pps": 360202,
+ "tx_pps": 362468,
+ "tx_pkts": 3602027,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 368314.0,
+ "rx_pkts": 3660123,
+ "time_ms": 1648519653779,
+ "drop_pct": 0,
+ "total_tx_pps": 366012,
+ "tx_pps": 368314,
+ "tx_pkts": 3660123,
+ "ndr_pps": 184157,
+ "drop_percentage": 0.0
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 10000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "fc9128efed9440d785de14f69b0676de"
+ },
+ "synthesis": {
+ "avg_delay_usec": 137.0001010894989,
+ "total_tx_rate": 366012
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1280-fc_10k-rate_ndr-2.json",
+ "frame_sizes": [
+ "1280"
+ ],
+ "rate": "ndr",
+ "flow_count": "10k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-29 02:17:23",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "e329e7ec82084f7186e94e7d1c71663a",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "1280"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 10000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1280-fc_10k-rate_ndr-2.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "1280"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2519,
+ 2504
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1280-fc_10k-rate_ndr-2.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "1280": {
+ "ndr": {
+ "load_percent_per_direction": 6.8359375,
+ "timestamp_sec": 1648520386.142867,
+ "stats": {
+ "total_tx_rate": 326596,
+ "overall": {
+ "rx_pkts": 3265961,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 4719,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 3265961,
+ "avg_delay_usec": 245.0000499087405,
+ "min_delay_usec": 36,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1632899,
+ "min_delay_usec": 36,
+ "drop_pct": 0,
+ "max_delay_usec": 725,
+ "tx_pkts": 1633062,
+ "avg_delay_usec": 244,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 1633062,
+ "min_delay_usec": 36,
+ "drop_pct": 0,
+ "max_delay_usec": 4719,
+ "tx_pkts": 1632899,
+ "avg_delay_usec": 246,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 3396598400.0,
+ "theoretical_tx_rate_pps": 4807692.307692308
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 13.671875,
+ "duration_sec": 10.0,
+ "l2frame_size": "1280",
+ "rate_pps": 328650,
+ "rate_bps": 3417968750.0,
+ "time_taken_sec": 137.8278579711914
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 1535106.7095401918,
+ "rx_pkts": 15014376,
+ "time_ms": 1648520260799,
+ "drop_pct": 32008085,
+ "total_tx_pps": 4702246,
+ "tx_pps": 4807692,
+ "tx_pkts": 47022461,
+ "drop_percentage": 68.06977839802983
+ },
+ {
+ "rx_pps": 1523422.5772190758,
+ "rx_pkts": 15139014,
+ "time_ms": 1648520273342,
+ "drop_pct": 8749209,
+ "total_tx_pps": 2388822,
+ "tx_pps": 2403846,
+ "tx_pkts": 23888223,
+ "drop_percentage": 36.62561673172592
+ },
+ {
+ "rx_pps": 1179882.5947820866,
+ "rx_pkts": 11736883,
+ "time_ms": 1648520285887,
+ "drop_pct": 219237,
+ "total_tx_pps": 1195612,
+ "tx_pps": 1201922,
+ "tx_pkts": 11956120,
+ "drop_percentage": 1.8336801571078243
+ },
+ {
+ "rx_pps": 600894.1953235778,
+ "rx_pkts": 5971989,
+ "time_ms": 1648520298395,
+ "drop_pct": 654,
+ "total_tx_pps": 597264,
+ "tx_pps": 600960,
+ "tx_pkts": 5972643,
+ "drop_percentage": 0.010949926188456267
+ },
+ {
+ "rx_pps": 300480.0,
+ "rx_pkts": 2986172,
+ "time_ms": 1648520310891,
+ "drop_pct": 0,
+ "total_tx_pps": 298617,
+ "tx_pps": 300480,
+ "tx_pkts": 2986172,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 450712.05910630024,
+ "rx_pkts": 4483910,
+ "time_ms": 1648520323438,
+ "drop_pct": 79,
+ "total_tx_pps": 448398,
+ "tx_pps": 450720,
+ "tx_pkts": 4483989,
+ "drop_percentage": 0.0017618241257951347
+ },
+ {
+ "rx_pps": 375548.77991538175,
+ "rx_pkts": 3732019,
+ "time_ms": 1648520335959,
+ "drop_pct": 509,
+ "total_tx_pps": 373252,
+ "tx_pps": 375600,
+ "tx_pkts": 3732528,
+ "drop_percentage": 0.013636870239151588
+ },
+ {
+ "rx_pps": 338015.5471880093,
+ "rx_pkts": 3359032,
+ "time_ms": 1648520348460,
+ "drop_pct": 243,
+ "total_tx_pps": 335927,
+ "tx_pps": 338040,
+ "tx_pkts": 3359275,
+ "drop_percentage": 0.007233703700947377
+ },
+ {
+ "rx_pps": 319260.0,
+ "rx_pkts": 3172967,
+ "time_ms": 1648520361037,
+ "drop_pct": 0,
+ "total_tx_pps": 317296,
+ "tx_pps": 319260,
+ "tx_pkts": 3172967,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 328650.0,
+ "rx_pkts": 3265961,
+ "time_ms": 1648520373554,
+ "drop_pct": 0,
+ "total_tx_pps": 326596,
+ "tx_pps": 328650,
+ "tx_pkts": 3265961,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 333339.37153865054,
+ "rx_pkts": 3312896,
+ "time_ms": 1648520386142,
+ "drop_pct": 46,
+ "total_tx_pps": 331294,
+ "tx_pps": 333344,
+ "tx_pkts": 3312942,
+ "ndr_pps": 164325,
+ "drop_percentage": 0.0013884939730306174
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 10000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "e329e7ec82084f7186e94e7d1c71663a"
+ },
+ "synthesis": {
+ "avg_delay_usec": 245.0000499087405,
+ "total_tx_rate": 326596
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1518-fc_10k-rate_ndr-2.json",
+ "frame_sizes": [
+ "1518"
+ ],
+ "rate": "ndr",
+ "flow_count": "10k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-29 02:22:16",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "1e8206de26514ff6a4931f6250fde24a",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "1518"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 10000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1518-fc_10k-rate_ndr-1.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "1518"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2519,
+ 2504
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1518-fc_10k-rate_ndr-1.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "1518": {
+ "ndr": {
+ "load_percent_per_direction": 9.375,
+ "timestamp_sec": 1648520679.0839975,
+ "stats": {
+ "total_tx_rate": 378591,
+ "overall": {
+ "rx_pkts": 3785894,
+ "drop_percentage": 0.00047544686722776435,
+ "drop_pct": 18,
+ "max_delay_usec": 3658,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 3785912,
+ "avg_delay_usec": 170.99981827277784,
+ "min_delay_usec": 34,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1892861,
+ "min_delay_usec": 34,
+ "drop_pct": 0,
+ "max_delay_usec": 3658,
+ "tx_pkts": 1893051,
+ "avg_delay_usec": 175,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 1893033,
+ "min_delay_usec": 35,
+ "drop_pct": 18,
+ "max_delay_usec": 3371,
+ "tx_pkts": 1892861,
+ "avg_delay_usec": 167,
+ "drop_percentage": 0.0009509414584589149
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 4658183664.0,
+ "theoretical_tx_rate_pps": 4063719.1157347206
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 18.75,
+ "duration_sec": 10.0,
+ "l2frame_size": "1518",
+ "rate_pps": 380972,
+ "rate_bps": 4687500000.0,
+ "time_taken_sec": 137.66561269760132
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 1541559.265878926,
+ "rx_pkts": 15109078,
+ "time_ms": 1648520553914,
+ "drop_pct": 24720096,
+ "total_tx_pps": 3982917,
+ "tx_pps": 4063718,
+ "tx_pkts": 39829174,
+ "drop_percentage": 62.06529916989993
+ },
+ {
+ "rx_pps": 1494377.2278385973,
+ "rx_pkts": 14850376,
+ "time_ms": 1648520566411,
+ "drop_pct": 5341216,
+ "total_tx_pps": 2019159,
+ "tx_pps": 2031858,
+ "tx_pkts": 20191592,
+ "drop_percentage": 26.452673964489772
+ },
+ {
+ "rx_pps": 1015244.8303578512,
+ "rx_pkts": 10088998,
+ "time_ms": 1648520578933,
+ "drop_pct": 6789,
+ "total_tx_pps": 1009578,
+ "tx_pps": 1015928,
+ "tx_pkts": 10095787,
+ "drop_percentage": 0.06724587196619738
+ },
+ {
+ "rx_pps": 507229.30857634713,
+ "rx_pkts": 5040594,
+ "time_ms": 1648520591432,
+ "drop_pct": 7301,
+ "total_tx_pps": 504789,
+ "tx_pps": 507964,
+ "tx_pkts": 5047895,
+ "drop_percentage": 0.1446345456868655
+ },
+ {
+ "rx_pps": 253982.0,
+ "rx_pkts": 2523948,
+ "time_ms": 1648520603928,
+ "drop_pct": 0,
+ "total_tx_pps": 252394,
+ "tx_pps": 253982,
+ "tx_pkts": 2523948,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 380970.18868056097,
+ "rx_pkts": 3785894,
+ "time_ms": 1648520616532,
+ "drop_pct": 18,
+ "total_tx_pps": 378591,
+ "tx_pps": 380972,
+ "tx_pkts": 3785912,
+ "drop_percentage": 0.0004754468672277644
+ },
+ {
+ "rx_pps": 444179.12352550065,
+ "rx_pkts": 4414476,
+ "time_ms": 1648520629047,
+ "drop_pct": 2871,
+ "total_tx_pps": 441734,
+ "tx_pps": 444468,
+ "tx_pkts": 4417347,
+ "drop_percentage": 0.06499376209294855
+ },
+ {
+ "rx_pps": 412677.0336150762,
+ "rx_pkts": 4101185,
+ "time_ms": 1648520641544,
+ "drop_pct": 427,
+ "total_tx_pps": 410161,
+ "tx_pps": 412720,
+ "tx_pkts": 4101612,
+ "drop_percentage": 0.01041054102630868
+ },
+ {
+ "rx_pps": 396730.1338174792,
+ "rx_pkts": 3944491,
+ "time_ms": 1648520654065,
+ "drop_pct": 1152,
+ "total_tx_pps": 394564,
+ "tx_pps": 396846,
+ "tx_pkts": 3945643,
+ "drop_percentage": 0.02919676209935871
+ },
+ {
+ "rx_pps": 388894.5031521723,
+ "rx_pkts": 3864641,
+ "time_ms": 1648520666566,
+ "drop_pct": 154,
+ "total_tx_pps": 386479,
+ "tx_pps": 388910,
+ "tx_pkts": 3864795,
+ "drop_percentage": 0.00398468741550328
+ },
+ {
+ "rx_pps": 384931.5345935888,
+ "rx_pkts": 3825258,
+ "time_ms": 1648520679083,
+ "drop_pct": 104,
+ "total_tx_pps": 382536,
+ "tx_pps": 384942,
+ "tx_pkts": 3825362,
+ "ndr_pps": 190486,
+ "drop_percentage": 0.002718696949465175
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 10000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "1e8206de26514ff6a4931f6250fde24a"
+ },
+ "synthesis": {
+ "avg_delay_usec": 170.99981827277784,
+ "total_tx_rate": 378591
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_IMIX-fc_10k-rate_ndr-2.json",
+ "frame_sizes": [
+ "IMIX"
+ ],
+ "rate": "ndr",
+ "flow_count": "10k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-29 02:27:13",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "6717811fb0a041bdae28c1780610969e",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "IMIX"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 10000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_IMIX-fc_10k-rate_ndr-0.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "IMIX"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2519,
+ 2504
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_IMIX-fc_10k-rate_ndr-0.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "IMIX": {
+ "ndr": {
+ "load_percent_per_direction": 2.05078125,
+ "timestamp_sec": 1648520976.011313,
+ "stats": {
+ "total_tx_rate": 333616,
+ "overall": {
+ "rx_pkts": 3336161,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 698,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 3336161,
+ "avg_delay_usec": 122.49997497123191,
+ "min_delay_usec": 28,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1667997,
+ "min_delay_usec": 30,
+ "drop_pct": 0,
+ "max_delay_usec": 698,
+ "tx_pkts": 1668164,
+ "avg_delay_usec": 123,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 1668164,
+ "min_delay_usec": 28,
+ "drop_pct": 0,
+ "max_delay_usec": 279,
+ "tx_pkts": 1667997,
+ "avg_delay_usec": 122,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 1019085674.6666666,
+ "theoretical_tx_rate_pps": 16368398.079441292
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 4.1015625,
+ "duration_sec": 10.0,
+ "l2frame_size": "IMIX",
+ "rate_pps": 335680,
+ "rate_bps": 1025390624.0,
+ "time_taken_sec": 137.6751914024353
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 480024.2862919867,
+ "rx_pkts": 4168384,
+ "time_ms": 1648520850833,
+ "drop_pct": 137969775,
+ "total_tx_pps": 14213815,
+ "tx_pps": 16368398,
+ "tx_pkts": 142138159,
+ "warning": "WARNING: There is a significant difference between requested TX rate (16368398) and actual TX rate (14213815). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "drop_percentage": 97.0673716127138
+ },
+ {
+ "rx_pps": 429860.8379715359,
+ "rx_pkts": 4272172,
+ "time_ms": 1648520863348,
+ "drop_pct": 77066481,
+ "total_tx_pps": 8133865,
+ "tx_pps": 8184198,
+ "tx_pkts": 81338653,
+ "drop_percentage": 94.74767304051618
+ },
+ {
+ "rx_pps": 527546.4558752577,
+ "rx_pkts": 5242915,
+ "time_ms": 1648520875895,
+ "drop_pct": 35425583,
+ "total_tx_pps": 4066849,
+ "tx_pps": 4092098,
+ "tx_pkts": 40668498,
+ "drop_percentage": 87.1081666207589
+ },
+ {
+ "rx_pps": 1892052.775002597,
+ "rx_pkts": 18802280,
+ "time_ms": 1648520888389,
+ "drop_pct": 1530328,
+ "total_tx_pps": 2033260,
+ "tx_pps": 2046048,
+ "tx_pkts": 20332608,
+ "drop_percentage": 7.526471763976367
+ },
+ {
+ "rx_pps": 1018805.8604937441,
+ "rx_pkts": 10125407,
+ "time_ms": 1648520900966,
+ "drop_pct": 41922,
+ "total_tx_pps": 1016732,
+ "tx_pps": 1023024,
+ "tx_pkts": 10167329,
+ "drop_percentage": 0.4123206793052531
+ },
+ {
+ "rx_pps": 511505.0566071885,
+ "rx_pkts": 5083084,
+ "time_ms": 1648520913485,
+ "drop_pct": 69,
+ "total_tx_pps": 508315,
+ "tx_pps": 511512,
+ "tx_pkts": 5083153,
+ "drop_percentage": 0.0013574252043957757
+ },
+ {
+ "rx_pps": 255756.0,
+ "rx_pkts": 2541833,
+ "time_ms": 1648520925981,
+ "drop_pct": 0,
+ "total_tx_pps": 254183,
+ "tx_pps": 255756,
+ "tx_pkts": 2541833,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 383623.4350406216,
+ "rx_pkts": 3812647,
+ "time_ms": 1648520938480,
+ "drop_pct": 105,
+ "total_tx_pps": 381275,
+ "tx_pps": 383634,
+ "tx_pkts": 3812752,
+ "drop_percentage": 0.0027539163313008556
+ },
+ {
+ "rx_pps": 319694.0,
+ "rx_pkts": 3182880,
+ "time_ms": 1648520951016,
+ "drop_pct": 0,
+ "total_tx_pps": 318288,
+ "tx_pps": 319694,
+ "tx_pkts": 3182880,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 351650.215240727,
+ "rx_pkts": 3494880,
+ "time_ms": 1648520963515,
+ "drop_pct": 137,
+ "total_tx_pps": 349501,
+ "tx_pps": 351664,
+ "tx_pkts": 3495017,
+ "drop_percentage": 0.003919866484197359
+ },
+ {
+ "rx_pps": 335680.0,
+ "rx_pkts": 3336161,
+ "time_ms": 1648520976010,
+ "drop_pct": 0,
+ "total_tx_pps": 333616,
+ "tx_pps": 335680,
+ "tx_pkts": 3336161,
+ "ndr_pps": 167840,
+ "drop_percentage": 0.0
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 10000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "6717811fb0a041bdae28c1780610969e"
+ },
+ "synthesis": {
+ "avg_delay_usec": 122.49997497123191,
+ "total_tx_rate": 333616
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_9000-fc_10k-rate_ndr-2.json",
+ "frame_sizes": [
+ "9000"
+ ],
+ "rate": "ndr",
+ "flow_count": "10k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-29 02:36:59",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "a76995ed43ce4a1f8ff2e21b1a4d2fd9",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "9000"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 10000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_9000-fc_10k-rate_ndr-1.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "9000"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2519,
+ 2504
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_9000-fc_10k-rate_ndr-1.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "9000": {
+ "ndr": {
+ "load_percent_per_direction": 39.0625,
+ "timestamp_sec": 1648521561.8428352,
+ "stats": {
+ "total_tx_rate": 268972,
+ "overall": {
+ "rx_pkts": 2689705,
+ "drop_percentage": 0.0007435704393571834,
+ "drop_pct": 20,
+ "max_delay_usec": 6516,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 2689725,
+ "avg_delay_usec": 1027.9918745736056,
+ "min_delay_usec": 68,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1344775,
+ "min_delay_usec": 74,
+ "drop_pct": 20,
+ "max_delay_usec": 5878,
+ "tx_pkts": 1344930,
+ "avg_delay_usec": 1169,
+ "drop_percentage": 0.0014870662413657217
+ },
+ "0": {
+ "rx_pkts": 1344930,
+ "min_delay_usec": 68,
+ "drop_pct": 0,
+ "max_delay_usec": 6516,
+ "tx_pkts": 1344795,
+ "avg_delay_usec": 887,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 19409019520.0,
+ "theoretical_tx_rate_pps": 692904.6563192905
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 78.125,
+ "duration_sec": 10.0,
+ "l2frame_size": "9000",
+ "rate_pps": 270664,
+ "rate_bps": 19531250000.0,
+ "time_taken_sec": 137.58718967437744
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 278405.0005646744,
+ "rx_pkts": 2768644,
+ "time_ms": 1648521436741,
+ "drop_pct": 4122053,
+ "total_tx_pps": 689069,
+ "tx_pps": 692904,
+ "tx_pkts": 6890697,
+ "drop_percentage": 59.8205522605333
+ },
+ {
+ "rx_pps": 276331.9562142758,
+ "rx_pkts": 2746187,
+ "time_ms": 1648521449255,
+ "drop_pct": 696853,
+ "total_tx_pps": 344304,
+ "tx_pps": 346452,
+ "tx_pkts": 3443040,
+ "drop_percentage": 20.23946860913611
+ },
+ {
+ "rx_pps": 173226.0,
+ "rx_pkts": 1721607,
+ "time_ms": 1648521461778,
+ "drop_pct": 0,
+ "total_tx_pps": 172160,
+ "tx_pps": 173226,
+ "tx_pkts": 1721607,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 259837.29559799578,
+ "rx_pkts": 2582135,
+ "time_ms": 1648521474298,
+ "drop_pct": 7,
+ "total_tx_pps": 258214,
+ "tx_pps": 259838,
+ "tx_pkts": 2582142,
+ "drop_percentage": 0.00027109275942221615
+ },
+ {
+ "rx_pps": 276937.05630908126,
+ "rx_pkts": 2752342,
+ "time_ms": 1648521486796,
+ "drop_pct": 260458,
+ "total_tx_pps": 301280,
+ "tx_pps": 303144,
+ "tx_pkts": 3012800,
+ "drop_percentage": 8.6450477960701
+ },
+ {
+ "rx_pps": 276792.8929701584,
+ "rx_pkts": 2755614,
+ "time_ms": 1648521499312,
+ "drop_pct": 46782,
+ "total_tx_pps": 280239,
+ "tx_pps": 281492,
+ "tx_pkts": 2802396,
+ "drop_percentage": 1.6693572214633479
+ },
+ {
+ "rx_pps": 270661.98742250603,
+ "rx_pkts": 2689705,
+ "time_ms": 1648521511811,
+ "drop_pct": 20,
+ "total_tx_pps": 268972,
+ "tx_pps": 270664,
+ "tx_pkts": 2689725,
+ "drop_percentage": 0.0007435704393571834
+ },
+ {
+ "rx_pps": 276052.0403556816,
+ "rx_pkts": 2743544,
+ "time_ms": 1648521524310,
+ "drop_pct": 258,
+ "total_tx_pps": 274380,
+ "tx_pps": 276078,
+ "tx_pkts": 2743802,
+ "drop_percentage": 0.009403010858655253
+ },
+ {
+ "rx_pps": 273364.7554496673,
+ "rx_pkts": 2716837,
+ "time_ms": 1648521536836,
+ "drop_pct": 72,
+ "total_tx_pps": 271690,
+ "tx_pps": 273372,
+ "tx_pkts": 2716909,
+ "drop_percentage": 0.0026500703556872904
+ },
+ {
+ "rx_pps": 271980.0648314645,
+ "rx_pkts": 2702940,
+ "time_ms": 1648521549342,
+ "drop_pct": 377,
+ "total_tx_pps": 270331,
+ "tx_pps": 272018,
+ "tx_pkts": 2703317,
+ "drop_percentage": 0.013945830252241968
+ },
+ {
+ "rx_pps": 271298.2308444215,
+ "rx_pkts": 2696299,
+ "time_ms": 1648521561842,
+ "drop_pct": 435,
+ "total_tx_pps": 269673,
+ "tx_pps": 271342,
+ "tx_pkts": 2696734,
+ "ndr_pps": 135332,
+ "drop_percentage": 0.016130623190867176
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 10000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "a76995ed43ce4a1f8ff2e21b1a4d2fd9"
+ },
+ "synthesis": {
+ "avg_delay_usec": 1027.9918745736056,
+ "total_tx_rate": 268972
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_64-fc_100k-rate_ndr-2.json",
+ "frame_sizes": [
+ "64"
+ ],
+ "rate": "ndr",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-29 02:44:19",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "859cf30e41754c5983e562fb7bf0fb6d",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "64"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_64-fc_100k-rate_ndr-1.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "64"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2519,
+ 2504
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_64-fc_100k-rate_ndr-1.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "64": {
+ "ndr": {
+ "load_percent_per_direction": 0.78125,
+ "timestamp_sec": 1648522002.495307,
+ "stats": {
+ "total_tx_rate": 577711,
+ "overall": {
+ "rx_pkts": 5777113,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 275,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 5777113,
+ "avg_delay_usec": 119.99994997501346,
+ "min_delay_usec": 30,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 2888412,
+ "min_delay_usec": 30,
+ "drop_pct": 0,
+ "max_delay_usec": 260,
+ "tx_pkts": 2888701,
+ "avg_delay_usec": 121,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 2888701,
+ "min_delay_usec": 32,
+ "drop_pct": 0,
+ "max_delay_usec": 275,
+ "tx_pkts": 2888412,
+ "avg_delay_usec": 119,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 388221792.0,
+ "theoretical_tx_rate_pps": 74404761.90476191
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 1.5625,
+ "duration_sec": 10.0,
+ "l2frame_size": "64",
+ "rate_pps": 581286,
+ "rate_bps": 390625000.0,
+ "time_taken_sec": 137.66614270210266
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 1044485.5784527424,
+ "rx_pkts": 5973011,
+ "time_ms": 1648521877346,
+ "drop_pct": 419519173,
+ "total_tx_pps": 42549218,
+ "tx_pps": 74404760,
+ "tx_pkts": 425492184,
+ "warning": "WARNING: There is a significant difference between requested TX rate (74404760) and actual TX rate (42549218). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "drop_percentage": 98.59621134662252
+ },
+ {
+ "rx_pps": 1656555.9939682153,
+ "rx_pkts": 16462060,
+ "time_ms": 1648521889844,
+ "drop_pct": 353237373,
+ "total_tx_pps": 36969943,
+ "tx_pps": 37202380,
+ "tx_pkts": 369699433,
+ "drop_percentage": 95.54717737422118
+ },
+ {
+ "rx_pps": 966647.7521170629,
+ "rx_pkts": 9607013,
+ "time_ms": 1648521902362,
+ "drop_pct": 175260612,
+ "total_tx_pps": 18486762,
+ "tx_pps": 18601190,
+ "tx_pkts": 184867625,
+ "drop_percentage": 94.80330155158319
+ },
+ {
+ "rx_pps": 1951565.285508652,
+ "rx_pkts": 19395621,
+ "time_ms": 1648521914859,
+ "drop_pct": 73038282,
+ "total_tx_pps": 9243390,
+ "tx_pps": 9300594,
+ "tx_pkts": 92433903,
+ "drop_percentage": 79.01676725692303
+ },
+ {
+ "rx_pps": 1716942.598940512,
+ "rx_pkts": 17062118,
+ "time_ms": 1648521927407,
+ "drop_pct": 29150201,
+ "total_tx_pps": 4621231,
+ "tx_pps": 4650296,
+ "tx_pkts": 46212319,
+ "drop_percentage": 63.07885349791687
+ },
+ {
+ "rx_pps": 1580289.032741088,
+ "rx_pkts": 15705705,
+ "time_ms": 1648521939922,
+ "drop_pct": 7402782,
+ "total_tx_pps": 2310848,
+ "tx_pps": 2325148,
+ "tx_pkts": 23108487,
+ "drop_percentage": 32.03490561714404
+ },
+ {
+ "rx_pps": 1161510.1511160529,
+ "rx_pkts": 11542509,
+ "time_ms": 1648521952469,
+ "drop_pct": 10572,
+ "total_tx_pps": 1155308,
+ "tx_pps": 1162574,
+ "tx_pkts": 11553081,
+ "drop_percentage": 0.09150805746103571
+ },
+ {
+ "rx_pps": 581286.0,
+ "rx_pkts": 5777113,
+ "time_ms": 1648521964985,
+ "drop_pct": 0,
+ "total_tx_pps": 577711,
+ "tx_pps": 581286,
+ "tx_pkts": 5777113,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 871909.7756240192,
+ "rx_pkts": 8665477,
+ "time_ms": 1648521977483,
+ "drop_pct": 201,
+ "total_tx_pps": 866567,
+ "tx_pps": 871930,
+ "tx_pkts": 8665678,
+ "drop_percentage": 0.0023194953701256844
+ },
+ {
+ "rx_pps": 726593.5108987914,
+ "rx_pkts": 7221253,
+ "time_ms": 1648521989998,
+ "drop_pct": 144,
+ "total_tx_pps": 722139,
+ "tx_pps": 726608,
+ "tx_pkts": 7221397,
+ "drop_percentage": 0.001994073999809178
+ },
+ {
+ "rx_pps": 653890.8427914827,
+ "rx_pkts": 6498043,
+ "time_ms": 1648522002494,
+ "drop_pct": 568,
+ "total_tx_pps": 649861,
+ "tx_pps": 653948,
+ "tx_pkts": 6498611,
+ "ndr_pps": 290643,
+ "drop_percentage": 0.008740329279595286
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "859cf30e41754c5983e562fb7bf0fb6d"
+ },
+ "synthesis": {
+ "avg_delay_usec": 119.99994997501346,
+ "total_tx_rate": 577711
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_128-fc_100k-rate_ndr-2.json",
+ "frame_sizes": [
+ "128"
+ ],
+ "rate": "ndr",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-29 02:54:07",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "d00c9abb62b94d448a46ffa181ddab5e",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "128"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_128-fc_100k-rate_ndr-2.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "128"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2519,
+ 2504
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_128-fc_100k-rate_ndr-2.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "128": {
+ "ndr": {
+ "load_percent_per_direction": 1.5625,
+ "timestamp_sec": 1648522591.145952,
+ "stats": {
+ "total_tx_rate": 655780,
+ "overall": {
+ "rx_pkts": 6557739,
+ "drop_percentage": 0.0009454388750131332,
+ "drop_pct": 62,
+ "max_delay_usec": 957,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 6557801,
+ "avg_delay_usec": 138.4995528184333,
+ "min_delay_usec": 32,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 3278674,
+ "min_delay_usec": 34,
+ "drop_pct": 62,
+ "max_delay_usec": 321,
+ "tx_pkts": 3279065,
+ "avg_delay_usec": 146,
+ "drop_percentage": 0.0018907828908545576
+ },
+ "0": {
+ "rx_pkts": 3279065,
+ "min_delay_usec": 32,
+ "drop_pct": 0,
+ "max_delay_usec": 957,
+ "tx_pkts": 3278736,
+ "avg_delay_usec": 131,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 776443520.0,
+ "theoretical_tx_rate_pps": 42229729.72972973
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 3.125,
+ "duration_sec": 10.0,
+ "l2frame_size": "128",
+ "rate_pps": 659838,
+ "rate_bps": 781250000.0,
+ "time_taken_sec": 137.81604623794556
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 575195.7927175488,
+ "rx_pkts": 5266904,
+ "time_ms": 1648522465816,
+ "drop_pct": 381418684,
+ "total_tx_pps": 38668558,
+ "tx_pps": 42229728,
+ "tx_pkts": 386685588,
+ "drop_percentage": 98.63793630705472
+ },
+ {
+ "rx_pps": 567278.3196453974,
+ "rx_pkts": 5637329,
+ "time_ms": 1648522478320,
+ "drop_pct": 204191658,
+ "total_tx_pps": 20982898,
+ "tx_pps": 21114864,
+ "tx_pkts": 209828987,
+ "drop_percentage": 97.31336976811502
+ },
+ {
+ "rx_pps": 566897.9693114288,
+ "rx_pkts": 5633553,
+ "time_ms": 1648522490823,
+ "drop_pct": 99281010,
+ "total_tx_pps": 10491456,
+ "tx_pps": 10557432,
+ "tx_pkts": 104914563,
+ "drop_percentage": 94.63034221474096
+ },
+ {
+ "rx_pps": 639383.528283698,
+ "rx_pkts": 6368581,
+ "time_ms": 1648522503423,
+ "drop_pct": 46210081,
+ "total_tx_pps": 5257866,
+ "tx_pps": 5278716,
+ "tx_pkts": 52578662,
+ "drop_percentage": 87.88751794406636
+ },
+ {
+ "rx_pps": 1855352.6709109098,
+ "rx_pkts": 18437572,
+ "time_ms": 1648522515925,
+ "drop_pct": 7791055,
+ "total_tx_pps": 2622862,
+ "tx_pps": 2639358,
+ "tx_pkts": 26228627,
+ "drop_percentage": 29.704395125219477
+ },
+ {
+ "rx_pps": 1315331.5523658819,
+ "rx_pkts": 13071766,
+ "time_ms": 1648522528443,
+ "drop_pct": 43195,
+ "total_tx_pps": 1311496,
+ "tx_pps": 1319678,
+ "tx_pkts": 13114961,
+ "drop_percentage": 0.32935667898669313
+ },
+ {
+ "rx_pps": 659831.761635036,
+ "rx_pkts": 6557739,
+ "time_ms": 1648522540951,
+ "drop_pct": 62,
+ "total_tx_pps": 655780,
+ "tx_pps": 659838,
+ "tx_pkts": 6557801,
+ "drop_percentage": 0.0009454388750131332
+ },
+ {
+ "rx_pps": 987585.841691004,
+ "rx_pkts": 9815124,
+ "time_ms": 1648522553600,
+ "drop_pct": 21588,
+ "total_tx_pps": 983671,
+ "tx_pps": 989758,
+ "tx_pkts": 9836712,
+ "drop_percentage": 0.21946357685372916
+ },
+ {
+ "rx_pps": 824593.6227131974,
+ "rx_pkts": 8194402,
+ "time_ms": 1648522566129,
+ "drop_pct": 2031,
+ "total_tx_pps": 819643,
+ "tx_pps": 824798,
+ "tx_pkts": 8196433,
+ "drop_percentage": 0.02477907157906372
+ },
+ {
+ "rx_pps": 742228.248068629,
+ "rx_pkts": 7376639,
+ "time_ms": 1648522578649,
+ "drop_pct": 892,
+ "total_tx_pps": 737753,
+ "tx_pps": 742318,
+ "tx_pkts": 7377531,
+ "drop_percentage": 0.012090765867334208
+ },
+ {
+ "rx_pps": 700873.6432437552,
+ "rx_pkts": 6965634,
+ "time_ms": 1648522591145,
+ "drop_pct": 2031,
+ "total_tx_pps": 696766,
+ "tx_pps": 701078,
+ "tx_pkts": 6967665,
+ "ndr_pps": 329919,
+ "drop_percentage": 0.029148932963912588
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "d00c9abb62b94d448a46ffa181ddab5e"
+ },
+ "synthesis": {
+ "avg_delay_usec": 138.4995528184333,
+ "total_tx_rate": 655780
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_256-fc_100k-rate_ndr-2.json",
+ "frame_sizes": [
+ "256"
+ ],
+ "rate": "ndr",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-29 03:01:28",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "00c68a9f42064b53b7e9abb957d13033",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "256"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_256-fc_100k-rate_ndr-2.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "256"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2519,
+ 2504
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_256-fc_100k-rate_ndr-2.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "256": {
+ "ndr": {
+ "load_percent_per_direction": 2.34375,
+ "timestamp_sec": 1648523031.8611252,
+ "stats": {
+ "total_tx_rate": 527476,
+ "overall": {
+ "rx_pkts": 5274760,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 2258,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 5274760,
+ "avg_delay_usec": 135.49841149170769,
+ "min_delay_usec": 30,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 2637247,
+ "min_delay_usec": 30,
+ "drop_pct": 0,
+ "max_delay_usec": 251,
+ "tx_pkts": 2637513,
+ "avg_delay_usec": 167,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 2637513,
+ "min_delay_usec": 30,
+ "drop_pct": 0,
+ "max_delay_usec": 2258,
+ "tx_pkts": 2637247,
+ "avg_delay_usec": 104,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 1164667008.0,
+ "theoretical_tx_rate_pps": 22644927.536231883
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 4.6875,
+ "duration_sec": 10.0,
+ "l2frame_size": "256",
+ "rate_pps": 530740,
+ "rate_bps": 1171875000.0,
+ "time_taken_sec": 137.57874631881714
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 632951.7633188012,
+ "rx_pkts": 5732879,
+ "time_ms": 1648522906769,
+ "drop_pct": 199370619,
+ "total_tx_pps": 20510349,
+ "tx_pps": 22644926,
+ "tx_pkts": 205103498,
+ "drop_percentage": 97.20488482356356
+ },
+ {
+ "rx_pps": 525347.9116271588,
+ "rx_pkts": 5220542,
+ "time_ms": 1648522919288,
+ "drop_pct": 107294207,
+ "total_tx_pps": 11251474,
+ "tx_pps": 11322462,
+ "tx_pkts": 112514749,
+ "drop_percentage": 95.36012651994629
+ },
+ {
+ "rx_pps": 618995.2907265456,
+ "rx_pkts": 6151267,
+ "time_ms": 1648522931785,
+ "drop_pct": 50107218,
+ "total_tx_pps": 5625848,
+ "tx_pps": 5661230,
+ "tx_pkts": 56258485,
+ "drop_percentage": 89.06606354579225
+ },
+ {
+ "rx_pps": 1708283.2963459694,
+ "rx_pkts": 16977774,
+ "time_ms": 1648522944283,
+ "drop_pct": 11154284,
+ "total_tx_pps": 2813205,
+ "tx_pps": 2830614,
+ "tx_pkts": 28132058,
+ "drop_percentage": 39.649726301573814
+ },
+ {
+ "rx_pps": 1360731.7774735298,
+ "rx_pkts": 13523635,
+ "time_ms": 1648522956800,
+ "drop_pct": 542386,
+ "total_tx_pps": 1406602,
+ "tx_pps": 1415306,
+ "tx_pkts": 14066021,
+ "drop_percentage": 3.8560016368523833
+ },
+ {
+ "rx_pps": 707523.1949731325,
+ "rx_pkts": 7031012,
+ "time_ms": 1648522969304,
+ "drop_pct": 1280,
+ "total_tx_pps": 703229,
+ "tx_pps": 707652,
+ "tx_pkts": 7032292,
+ "drop_percentage": 0.01820174702643178
+ },
+ {
+ "rx_pps": 353826.0,
+ "rx_pkts": 3522871,
+ "time_ms": 1648522981825,
+ "drop_pct": 0,
+ "total_tx_pps": 352287,
+ "tx_pps": 353826,
+ "tx_pkts": 3522871,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 530740.0,
+ "rx_pkts": 5274760,
+ "time_ms": 1648522994322,
+ "drop_pct": 0,
+ "total_tx_pps": 527476,
+ "tx_pps": 530740,
+ "tx_pkts": 5274760,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 619168.936279166,
+ "rx_pkts": 6154233,
+ "time_ms": 1648523006848,
+ "drop_pct": 269,
+ "total_tx_pps": 615450,
+ "tx_pps": 619196,
+ "tx_pkts": 6154502,
+ "drop_percentage": 0.004370784183675625
+ },
+ {
+ "rx_pps": 574945.8616487811,
+ "rx_pkts": 5713528,
+ "time_ms": 1648523019362,
+ "drop_pct": 220,
+ "total_tx_pps": 571374,
+ "tx_pps": 574968,
+ "tx_pkts": 5713748,
+ "drop_percentage": 0.0038503623190942267
+ },
+ {
+ "rx_pps": 552739.5964496398,
+ "rx_pkts": 5493404,
+ "time_ms": 1648523031860,
+ "drop_pct": 1137,
+ "total_tx_pps": 549454,
+ "tx_pps": 552854,
+ "tx_pkts": 5494541,
+ "ndr_pps": 265370,
+ "drop_percentage": 0.0206932662801133
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "00c68a9f42064b53b7e9abb957d13033"
+ },
+ "synthesis": {
+ "avg_delay_usec": 135.49841149170769,
+ "total_tx_rate": 527476
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_512-fc_100k-rate_ndr-2.json",
+ "frame_sizes": [
+ "512"
+ ],
+ "rate": "ndr",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-29 03:08:48",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "b4eddc7398da473da06f59d26481dd90",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "512"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_512-fc_100k-rate_ndr-2.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "512"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2519,
+ 2504
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_512-fc_100k-rate_ndr-2.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "512": {
+ "ndr": {
+ "load_percent_per_direction": 3.61328125,
+ "timestamp_sec": 1648523471.325121,
+ "stats": {
+ "total_tx_rate": 421839,
+ "overall": {
+ "rx_pkts": 4218391,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 964,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 4218391,
+ "avg_delay_usec": 91.49982327385015,
+ "min_delay_usec": 32,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 2109089,
+ "min_delay_usec": 32,
+ "drop_pct": 0,
+ "max_delay_usec": 964,
+ "tx_pkts": 2109302,
+ "avg_delay_usec": 95,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 2109302,
+ "min_delay_usec": 32,
+ "drop_pct": 0,
+ "max_delay_usec": 234,
+ "tx_pkts": 2109089,
+ "avg_delay_usec": 88,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 1795346784.0,
+ "theoretical_tx_rate_pps": 11748120.30075188
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 7.2265625,
+ "duration_sec": 10.0,
+ "l2frame_size": "512",
+ "rate_pps": 424492,
+ "rate_bps": 1806640624.0,
+ "time_taken_sec": 137.6849229335785
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 563084.4500570935,
+ "rx_pkts": 5335501,
+ "time_ms": 1648523346125,
+ "drop_pct": 105983691,
+ "total_tx_pps": 11131919,
+ "tx_pps": 11748120,
+ "tx_pkts": 111319192,
+ "drop_percentage": 95.20702503841386
+ },
+ {
+ "rx_pps": 637290.2801695273,
+ "rx_pkts": 6333073,
+ "time_ms": 1648523358659,
+ "drop_pct": 52040406,
+ "total_tx_pps": 5837347,
+ "tx_pps": 5874060,
+ "tx_pkts": 58373479,
+ "drop_percentage": 89.15076999265368
+ },
+ {
+ "rx_pps": 1745105.2638676804,
+ "rx_pkts": 17342859,
+ "time_ms": 1648523371158,
+ "drop_pct": 11845350,
+ "total_tx_pps": 2918820,
+ "tx_pps": 2937030,
+ "tx_pkts": 29188209,
+ "drop_percentage": 40.582654454749175
+ },
+ {
+ "rx_pps": 1410723.9011671874,
+ "rx_pkts": 14020482,
+ "time_ms": 1648523383738,
+ "drop_pct": 574347,
+ "total_tx_pps": 1459482,
+ "tx_pps": 1468514,
+ "tx_pkts": 14594829,
+ "drop_percentage": 3.935277350628774
+ },
+ {
+ "rx_pps": 734025.8600312393,
+ "rx_pkts": 7313468,
+ "time_ms": 1648523396281,
+ "drop_pct": 2293,
+ "total_tx_pps": 731576,
+ "tx_pps": 734256,
+ "tx_pkts": 7315761,
+ "drop_percentage": 0.03134328745840658
+ },
+ {
+ "rx_pps": 367128.0,
+ "rx_pkts": 3648704,
+ "time_ms": 1648523408795,
+ "drop_pct": 0,
+ "total_tx_pps": 364870,
+ "tx_pps": 367128,
+ "tx_pkts": 3648704,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 550589.7713038774,
+ "rx_pkts": 5472037,
+ "time_ms": 1648523421294,
+ "drop_pct": 1016,
+ "total_tx_pps": 547305,
+ "tx_pps": 550692,
+ "tx_pkts": 5473053,
+ "drop_percentage": 0.01856367917504179
+ },
+ {
+ "rx_pps": 458654.12648746,
+ "rx_pkts": 4558336,
+ "time_ms": 1648523433810,
+ "drop_pct": 2543,
+ "total_tx_pps": 456087,
+ "tx_pps": 458910,
+ "tx_pkts": 4560879,
+ "drop_percentage": 0.05575679600357738
+ },
+ {
+ "rx_pps": 413015.98762516497,
+ "rx_pkts": 4104762,
+ "time_ms": 1648523446308,
+ "drop_pct": 20,
+ "total_tx_pps": 410478,
+ "tx_pps": 413018,
+ "tx_pkts": 4104782,
+ "drop_percentage": 0.00048723659380693054
+ },
+ {
+ "rx_pps": 435949.3084804507,
+ "rx_pkts": 4332336,
+ "time_ms": 1648523458810,
+ "drop_pct": 146,
+ "total_tx_pps": 433248,
+ "tx_pps": 435964,
+ "tx_pkts": 4332482,
+ "drop_percentage": 0.0033698928235593364
+ },
+ {
+ "rx_pps": 424492.0,
+ "rx_pkts": 4218391,
+ "time_ms": 1648523471324,
+ "drop_pct": 0,
+ "total_tx_pps": 421839,
+ "tx_pps": 424492,
+ "tx_pkts": 4218391,
+ "ndr_pps": 212246,
+ "drop_percentage": 0.0
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "b4eddc7398da473da06f59d26481dd90"
+ },
+ "synthesis": {
+ "avg_delay_usec": 91.49982327385015,
+ "total_tx_rate": 421839
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_768-fc_100k-rate_ndr-2.json",
+ "frame_sizes": [
+ "768"
+ ],
+ "rate": "ndr",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-29 03:13:41",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "23114778f5174c1a8a3ff5e0156d0214",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "768"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_768-fc_100k-rate_ndr-1.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "768"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2519,
+ 2504
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_768-fc_100k-rate_ndr-1.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "768": {
+ "ndr": {
+ "load_percent_per_direction": 5.859375,
+ "timestamp_sec": 1648523764.1071556,
+ "stats": {
+ "total_tx_rate": 461876,
+ "overall": {
+ "rx_pkts": 4618724,
+ "drop_percentage": 0.0008227312860026129,
+ "drop_pct": 38,
+ "max_delay_usec": 4782,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 4618762,
+ "avg_delay_usec": 105.0,
+ "min_delay_usec": 33,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 2309249,
+ "min_delay_usec": 33,
+ "drop_pct": 16,
+ "max_delay_usec": 2687,
+ "tx_pkts": 2309497,
+ "avg_delay_usec": 105,
+ "drop_percentage": 0.000692791547250332
+ },
+ "0": {
+ "rx_pkts": 2309475,
+ "min_delay_usec": 33,
+ "drop_pct": 22,
+ "max_delay_usec": 4782,
+ "tx_pkts": 2309265,
+ "avg_delay_usec": 105,
+ "drop_percentage": 0.0009526840791334039
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 2911666304.0,
+ "theoretical_tx_rate_pps": 7931472.081218274
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 11.71875,
+ "duration_sec": 10.0,
+ "l2frame_size": "768",
+ "rate_pps": 464734,
+ "rate_bps": 2929687500.0,
+ "time_taken_sec": 137.67143726348877
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 955878.5749151269,
+ "rx_pkts": 9207107,
+ "time_ms": 1648523638974,
+ "drop_pct": 67189533,
+ "total_tx_pps": 7639664,
+ "tx_pps": 7931472,
+ "tx_pkts": 76396640,
+ "drop_percentage": 87.9482828040605
+ },
+ {
+ "rx_pps": 972237.1870658809,
+ "rx_pkts": 9662578,
+ "time_ms": 1648523651488,
+ "drop_pct": 29750884,
+ "total_tx_pps": 3941346,
+ "tx_pps": 3965736,
+ "tx_pkts": 39413462,
+ "drop_percentage": 75.48406683990359
+ },
+ {
+ "rx_pps": 1578290.234876225,
+ "rx_pkts": 15684261,
+ "time_ms": 1648523663985,
+ "drop_pct": 4020492,
+ "total_tx_pps": 1970475,
+ "tx_pps": 1982868,
+ "tx_pkts": 19704753,
+ "drop_percentage": 20.40366605965576
+ },
+ {
+ "rx_pps": 991198.3508095556,
+ "rx_pkts": 9851027,
+ "time_ms": 1648523676482,
+ "drop_pct": 2342,
+ "total_tx_pps": 985336,
+ "tx_pps": 991434,
+ "tx_pkts": 9853369,
+ "drop_percentage": 0.023768520188374147
+ },
+ {
+ "rx_pps": 495674.5408910233,
+ "rx_pkts": 4925767,
+ "time_ms": 1648523688978,
+ "drop_pct": 412,
+ "total_tx_pps": 492617,
+ "tx_pps": 495716,
+ "tx_pkts": 4926179,
+ "drop_percentage": 0.00836348009278591
+ },
+ {
+ "rx_pps": 247858.0,
+ "rx_pkts": 2463338,
+ "time_ms": 1648523701524,
+ "drop_pct": 0,
+ "total_tx_pps": 246333,
+ "tx_pps": 247858,
+ "tx_pkts": 2463338,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 371786.0,
+ "rx_pkts": 3698343,
+ "time_ms": 1648523714031,
+ "drop_pct": 0,
+ "total_tx_pps": 369834,
+ "tx_pps": 371786,
+ "tx_pkts": 3698343,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 433750.39284890535,
+ "rx_pkts": 4318204,
+ "time_ms": 1648523726546,
+ "drop_pct": 16,
+ "total_tx_pps": 431822,
+ "tx_pps": 433752,
+ "tx_pkts": 4318220,
+ "drop_percentage": 0.00037052303958575524
+ },
+ {
+ "rx_pps": 464730.17648798524,
+ "rx_pkts": 4618724,
+ "time_ms": 1648523739092,
+ "drop_pct": 38,
+ "total_tx_pps": 461876,
+ "tx_pps": 464734,
+ "tx_pkts": 4618762,
+ "drop_percentage": 0.0008227312860026128
+ },
+ {
+ "rx_pps": 480195.32365105936,
+ "rx_pkts": 4772423,
+ "time_ms": 1648523751589,
+ "drop_pct": 285,
+ "total_tx_pps": 477270,
+ "tx_pps": 480224,
+ "tx_pkts": 4772708,
+ "drop_percentage": 0.005971452684723222
+ },
+ {
+ "rx_pps": 472303.0115781439,
+ "rx_pkts": 4693985,
+ "time_ms": 1648523764106,
+ "drop_pct": 1759,
+ "total_tx_pps": 469574,
+ "tx_pps": 472480,
+ "tx_pkts": 4695744,
+ "ndr_pps": 232367,
+ "drop_percentage": 0.03745945264477791
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "23114778f5174c1a8a3ff5e0156d0214"
+ },
+ "synthesis": {
+ "avg_delay_usec": 105.0,
+ "total_tx_rate": 461876
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1024-fc_100k-rate_ndr-2.json",
+ "frame_sizes": [
+ "1024"
+ ],
+ "rate": "ndr",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-29 03:18:34",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "fbf5ac38628f451fa3ca8b356e8c75b2",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "1024"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1024-fc_100k-rate_ndr-0.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "1024"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2519,
+ 2504
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1024-fc_100k-rate_ndr-0.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "1024": {
+ "ndr": {
+ "load_percent_per_direction": 6.640625,
+ "timestamp_sec": 1648524057.2266753,
+ "stats": {
+ "total_tx_rate": 395081,
+ "overall": {
+ "rx_pkts": 3950815,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 5009,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 3950815,
+ "avg_delay_usec": 135.49999860788216,
+ "min_delay_usec": 32,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1975407,
+ "min_delay_usec": 32,
+ "drop_pct": 0,
+ "max_delay_usec": 1872,
+ "tx_pkts": 1975408,
+ "avg_delay_usec": 141,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 1975408,
+ "min_delay_usec": 35,
+ "drop_pct": 0,
+ "max_delay_usec": 5009,
+ "tx_pkts": 1975407,
+ "avg_delay_usec": 130,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 3299716512.0,
+ "theoretical_tx_rate_pps": 5986590.038314176
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 13.28125,
+ "duration_sec": 10.0,
+ "l2frame_size": "1024",
+ "rate_pps": 397546,
+ "rate_bps": 3320312500.0,
+ "time_taken_sec": 137.57492899894714
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 1528705.606599547,
+ "rx_pkts": 14848752,
+ "time_ms": 1648523932137,
+ "drop_pct": 43300698,
+ "total_tx_pps": 5814945,
+ "tx_pps": 5986590,
+ "tx_pkts": 58149450,
+ "drop_percentage": 74.46450138393398
+ },
+ {
+ "rx_pps": 1577883.6850487113,
+ "rx_pkts": 15680218,
+ "time_ms": 1648523944639,
+ "drop_pct": 14065639,
+ "total_tx_pps": 2974585,
+ "tx_pps": 2993294,
+ "tx_pkts": 29745857,
+ "drop_percentage": 47.286043901844884
+ },
+ {
+ "rx_pps": 1403083.656451526,
+ "rx_pkts": 13943147,
+ "time_ms": 1648523957150,
+ "drop_pct": 929776,
+ "total_tx_pps": 1487292,
+ "tx_pps": 1496646,
+ "tx_pkts": 14872923,
+ "drop_percentage": 6.25146785201537
+ },
+ {
+ "rx_pps": 748312.0377400354,
+ "rx_pkts": 7436354,
+ "time_ms": 1648523969710,
+ "drop_pct": 99,
+ "total_tx_pps": 743645,
+ "tx_pps": 748322,
+ "tx_pkts": 7436453,
+ "drop_percentage": 0.0013312798453778971
+ },
+ {
+ "rx_pps": 374160.0,
+ "rx_pkts": 3718217,
+ "time_ms": 1648523982208,
+ "drop_pct": 0,
+ "total_tx_pps": 371821,
+ "tx_pps": 374160,
+ "tx_pkts": 3718217,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 561003.6221851375,
+ "rx_pkts": 5575257,
+ "time_ms": 1648523994704,
+ "drop_pct": 2369,
+ "total_tx_pps": 557762,
+ "tx_pps": 561242,
+ "tx_pkts": 5577626,
+ "drop_percentage": 0.042473267300460804
+ },
+ {
+ "rx_pps": 467630.352253285,
+ "rx_pkts": 4647080,
+ "time_ms": 1648524007203,
+ "drop_pct": 712,
+ "total_tx_pps": 464779,
+ "tx_pps": 467702,
+ "tx_pkts": 4647792,
+ "drop_percentage": 0.015319102059644665
+ },
+ {
+ "rx_pps": 420890.9516613151,
+ "rx_pkts": 4183446,
+ "time_ms": 1648524019707,
+ "drop_pct": 408,
+ "total_tx_pps": 418385,
+ "tx_pps": 420932,
+ "tx_pkts": 4183854,
+ "drop_percentage": 0.00975177432099686
+ },
+ {
+ "rx_pps": 397546.0,
+ "rx_pkts": 3950815,
+ "time_ms": 1648524032233,
+ "drop_pct": 0,
+ "total_tx_pps": 395081,
+ "tx_pps": 397546,
+ "tx_pkts": 3950815,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 409232.9685563975,
+ "rx_pkts": 4066755,
+ "time_ms": 1648524044730,
+ "drop_pct": 50,
+ "total_tx_pps": 406680,
+ "tx_pps": 409238,
+ "tx_pkts": 4066805,
+ "drop_percentage": 0.0012294663747093849
+ },
+ {
+ "rx_pps": 403269.836569411,
+ "rx_pkts": 4007497,
+ "time_ms": 1648524057225,
+ "drop_pct": 1214,
+ "total_tx_pps": 400871,
+ "tx_pps": 403392,
+ "tx_pkts": 4008711,
+ "ndr_pps": 198773,
+ "drop_percentage": 0.030284048912480845
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "fbf5ac38628f451fa3ca8b356e8c75b2"
+ },
+ "synthesis": {
+ "avg_delay_usec": 135.49999860788216,
+ "total_tx_rate": 395081
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1280-fc_100k-rate_ndr-2.json",
+ "frame_sizes": [
+ "1280"
+ ],
+ "rate": "ndr",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-29 03:30:47",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "786f3740545f4a40a9dc01f9dffc595c",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "1280"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1280-fc_100k-rate_ndr-2.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "1280"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2519,
+ 2504
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1280-fc_100k-rate_ndr-2.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "1280": {
+ "ndr": {
+ "load_percent_per_direction": 11.5234375,
+ "timestamp_sec": 1648524790.37032,
+ "stats": {
+ "total_tx_rate": 551101,
+ "overall": {
+ "rx_pkts": 5510977,
+ "drop_percentage": 0.0007076735033975586,
+ "drop_pct": 39,
+ "max_delay_usec": 3562,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 5511016,
+ "avg_delay_usec": 147.99948230595047,
+ "min_delay_usec": 32,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 2755330,
+ "min_delay_usec": 32,
+ "drop_pct": 39,
+ "max_delay_usec": 1593,
+ "tx_pkts": 2755647,
+ "avg_delay_usec": 157,
+ "drop_percentage": 0.0014152756140390988
+ },
+ "0": {
+ "rx_pkts": 2755647,
+ "min_delay_usec": 34,
+ "drop_pct": 0,
+ "max_delay_usec": 3562,
+ "tx_pkts": 2755369,
+ "avg_delay_usec": 139,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 5731450400.0,
+ "theoretical_tx_rate_pps": 4807692.307692308
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 23.046875,
+ "duration_sec": 10.0,
+ "l2frame_size": "1280",
+ "rate_pps": 554010,
+ "rate_bps": 5761718750.0,
+ "time_taken_sec": 137.65743374824524
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 1615487.8462332233,
+ "rx_pkts": 15772944,
+ "time_ms": 1648524665199,
+ "drop_pct": 31167339,
+ "total_tx_pps": 4694028,
+ "tx_pps": 4807692,
+ "tx_pkts": 46940283,
+ "drop_percentage": 66.3978506478114
+ },
+ {
+ "rx_pps": 1489092.605554872,
+ "rx_pkts": 14797858,
+ "time_ms": 1648524677694,
+ "drop_pct": 9090362,
+ "total_tx_pps": 2388822,
+ "tx_pps": 2403846,
+ "tx_pkts": 23888220,
+ "drop_percentage": 38.05374364435693
+ },
+ {
+ "rx_pps": 1181454.0274231592,
+ "rx_pkts": 11741884,
+ "time_ms": 1648524690189,
+ "drop_pct": 203421,
+ "total_tx_pps": 1194530,
+ "tx_pps": 1201922,
+ "tx_pkts": 11945305,
+ "drop_percentage": 1.7029368442245718
+ },
+ {
+ "rx_pps": 600838.4525039338,
+ "rx_pkts": 5971434,
+ "time_ms": 1648524702817,
+ "drop_pct": 1208,
+ "total_tx_pps": 597264,
+ "tx_pps": 600960,
+ "tx_pkts": 5972642,
+ "drop_percentage": 0.020225555122841785
+ },
+ {
+ "rx_pps": 300480.0,
+ "rx_pkts": 2986322,
+ "time_ms": 1648524715333,
+ "drop_pct": 0,
+ "total_tx_pps": 298632,
+ "tx_pps": 300480,
+ "tx_pkts": 2986322,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 450719.39622668474,
+ "rx_pkts": 4479026,
+ "time_ms": 1648524727826,
+ "drop_pct": 6,
+ "total_tx_pps": 447903,
+ "tx_pps": 450720,
+ "tx_pkts": 4479032,
+ "drop_percentage": 0.00013395751582038261
+ },
+ {
+ "rx_pps": 525840.0,
+ "rx_pkts": 5225536,
+ "time_ms": 1648524740327,
+ "drop_pct": 0,
+ "total_tx_pps": 522553,
+ "tx_pps": 525840,
+ "tx_pkts": 5225536,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 562993.5002502074,
+ "rx_pkts": 5595314,
+ "time_ms": 1648524752854,
+ "drop_pct": 4040,
+ "total_tx_pps": 559935,
+ "tx_pps": 563400,
+ "tx_pkts": 5599354,
+ "drop_percentage": 0.07215118029686995
+ },
+ {
+ "rx_pps": 544616.0833552305,
+ "rx_pkts": 5423016,
+ "time_ms": 1648524765370,
+ "drop_pct": 39,
+ "total_tx_pps": 542305,
+ "tx_pps": 544620,
+ "tx_pkts": 5423055,
+ "drop_percentage": 0.0007191518433797923
+ },
+ {
+ "rx_pps": 554006.0794180238,
+ "rx_pkts": 5510977,
+ "time_ms": 1648524777872,
+ "drop_pct": 39,
+ "total_tx_pps": 551101,
+ "tx_pps": 554010,
+ "tx_pkts": 5511016,
+ "drop_percentage": 0.0007076735033975586
+ },
+ {
+ "rx_pps": 558698.1513422158,
+ "rx_pkts": 5552345,
+ "time_ms": 1648524790369,
+ "drop_pct": 78,
+ "total_tx_pps": 555242,
+ "tx_pps": 558706,
+ "tx_pkts": 5552423,
+ "ndr_pps": 277005,
+ "drop_percentage": 0.0014047921060769326
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "786f3740545f4a40a9dc01f9dffc595c"
+ },
+ "synthesis": {
+ "avg_delay_usec": 147.99948230595047,
+ "total_tx_rate": 551101
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1518-fc_100k-rate_ndr-2.json",
+ "frame_sizes": [
+ "1518"
+ ],
+ "rate": "ndr",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-29 03:38:06",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "b9b765f0842945868ef0d452b85570ed",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "1518"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1518-fc_100k-rate_ndr-2.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "1518"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2519,
+ 2504
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1518-fc_100k-rate_ndr-2.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "1518": {
+ "ndr": {
+ "load_percent_per_direction": 12.5,
+ "timestamp_sec": 1648525229.1659203,
+ "stats": {
+ "total_tx_rate": 504814,
+ "overall": {
+ "rx_pkts": 5048100,
+ "drop_percentage": 0.0009706528075934367,
+ "drop_pct": 49,
+ "max_delay_usec": 311,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 5048149,
+ "avg_delay_usec": 148.00011410233554,
+ "min_delay_usec": 35,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 2524026,
+ "min_delay_usec": 35,
+ "drop_pct": 49,
+ "max_delay_usec": 311,
+ "tx_pkts": 2524074,
+ "avg_delay_usec": 136,
+ "drop_percentage": 0.001941305999744857
+ },
+ "0": {
+ "rx_pkts": 2524074,
+ "min_delay_usec": 39,
+ "drop_pct": 0,
+ "max_delay_usec": 303,
+ "tx_pkts": 2524075,
+ "avg_delay_usec": 160,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 6211231456.0,
+ "theoretical_tx_rate_pps": 4063719.1157347206
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 25.0,
+ "duration_sec": 10.0,
+ "l2frame_size": "1518",
+ "rate_pps": 507964,
+ "rate_bps": 6250000000.0,
+ "time_taken_sec": 137.6200978755951
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 1348830.8736421221,
+ "rx_pkts": 13196248,
+ "time_ms": 1648525104030,
+ "drop_pct": 26561020,
+ "total_tx_pps": 3975726,
+ "tx_pps": 4063718,
+ "tx_pkts": 39757268,
+ "drop_percentage": 66.80796074820836
+ },
+ {
+ "rx_pps": 1451865.4390061933,
+ "rx_pkts": 14429367,
+ "time_ms": 1648525116526,
+ "drop_pct": 5764257,
+ "total_tx_pps": 2019362,
+ "tx_pps": 2031858,
+ "tx_pkts": 20193624,
+ "drop_percentage": 28.544935767844347
+ },
+ {
+ "rx_pps": 1014023.4973269543,
+ "rx_pkts": 10076861,
+ "time_ms": 1648525129050,
+ "drop_pct": 18926,
+ "total_tx_pps": 1009578,
+ "tx_pps": 1015928,
+ "tx_pkts": 10095787,
+ "drop_percentage": 0.18746433537078389
+ },
+ {
+ "rx_pps": 507959.0694331724,
+ "rx_pkts": 5048100,
+ "time_ms": 1648525141631,
+ "drop_pct": 49,
+ "total_tx_pps": 504814,
+ "tx_pps": 507964,
+ "tx_pkts": 5048149,
+ "drop_percentage": 0.0009706528075934367
+ },
+ {
+ "rx_pps": 761678.3540363008,
+ "rx_pkts": 7569942,
+ "time_ms": 1648525154127,
+ "drop_pct": 2660,
+ "total_tx_pps": 757260,
+ "tx_pps": 761946,
+ "tx_pkts": 7572602,
+ "drop_percentage": 0.03512663150658123
+ },
+ {
+ "rx_pps": 634872.7798972944,
+ "rx_pkts": 6309050,
+ "time_ms": 1648525166633,
+ "drop_pct": 827,
+ "total_tx_pps": 630987,
+ "tx_pps": 634956,
+ "tx_pkts": 6309877,
+ "drop_percentage": 0.013106436147645985
+ },
+ {
+ "rx_pps": 571211.9497838132,
+ "rx_pkts": 5676421,
+ "time_ms": 1648525179164,
+ "drop_pct": 2465,
+ "total_tx_pps": 567888,
+ "tx_pps": 571460,
+ "tx_pkts": 5678886,
+ "drop_percentage": 0.04340640048065765
+ },
+ {
+ "rx_pps": 539692.3793376087,
+ "rx_pkts": 5363734,
+ "time_ms": 1648525191676,
+ "drop_pct": 195,
+ "total_tx_pps": 536392,
+ "tx_pps": 539712,
+ "tx_pkts": 5363929,
+ "drop_percentage": 0.0036353948756592414
+ },
+ {
+ "rx_pps": 523781.9497057231,
+ "rx_pkts": 5205085,
+ "time_ms": 1648525204173,
+ "drop_pct": 557,
+ "total_tx_pps": 520564,
+ "tx_pps": 523838,
+ "tx_pkts": 5205642,
+ "drop_percentage": 0.010699929038531654
+ },
+ {
+ "rx_pps": 515844.6541285334,
+ "rx_pkts": 5126210,
+ "time_ms": 1648525216667,
+ "drop_pct": 550,
+ "total_tx_pps": 512676,
+ "tx_pps": 515900,
+ "tx_pkts": 5126760,
+ "drop_percentage": 0.010728023156925622
+ },
+ {
+ "rx_pps": 511849.2830473219,
+ "rx_pkts": 5086504,
+ "time_ms": 1648525229165,
+ "drop_pct": 822,
+ "total_tx_pps": 508732,
+ "tx_pps": 511932,
+ "tx_pkts": 5087326,
+ "ndr_pps": 253982,
+ "drop_percentage": 0.016157800777854614
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "b9b765f0842945868ef0d452b85570ed"
+ },
+ "synthesis": {
+ "avg_delay_usec": 148.00011410233554,
+ "total_tx_rate": 504814
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_IMIX-fc_100k-rate_ndr-2.json",
+ "frame_sizes": [
+ "IMIX"
+ ],
+ "rate": "ndr",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-29 03:40:32",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "14202ba37ebc4fdea8f16b0278600b2d",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "IMIX"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_IMIX-fc_100k-rate_ndr-0.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "IMIX"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2519,
+ 2504
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_IMIX-fc_100k-rate_ndr-0.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "IMIX": {
+ "ndr": {
+ "load_percent_per_direction": 2.34375,
+ "timestamp_sec": 1648525375.443067,
+ "stats": {
+ "total_tx_rate": 381275,
+ "overall": {
+ "rx_pkts": 3812745,
+ "drop_percentage": 0.0001311389417087404,
+ "drop_pct": 5,
+ "max_delay_usec": 4320,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 3812750,
+ "avg_delay_usec": 101.9999483311892,
+ "min_delay_usec": 31,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1906274,
+ "min_delay_usec": 31,
+ "drop_pct": 5,
+ "max_delay_usec": 4320,
+ "tx_pkts": 1906471,
+ "avg_delay_usec": 103,
+ "drop_percentage": 0.00026226467646242715
+ },
+ "0": {
+ "rx_pkts": 1906471,
+ "min_delay_usec": 33,
+ "drop_pct": 0,
+ "max_delay_usec": 1815,
+ "tx_pkts": 1906279,
+ "avg_delay_usec": 101,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 1164668033.3333333,
+ "theoretical_tx_rate_pps": 16368398.079441292
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 4.6875,
+ "duration_sec": 10.0,
+ "l2frame_size": "IMIX",
+ "rate_pps": 383634,
+ "rate_bps": 1171875000.0,
+ "time_taken_sec": 137.6155240535736
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 771093.2513239763,
+ "rx_pkts": 6682599,
+ "time_ms": 1648525250355,
+ "drop_pct": 135172410,
+ "total_tx_pps": 14185500,
+ "tx_pps": 16368398,
+ "tx_pkts": 141855009,
+ "warning": "WARNING: There is a significant difference between requested TX rate (16368398) and actual TX rate (14185500). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "drop_percentage": 95.28913427371465
+ },
+ {
+ "rx_pps": 680193.3374204193,
+ "rx_pkts": 6760101,
+ "time_ms": 1648525262852,
+ "drop_pct": 74578545,
+ "total_tx_pps": 8133864,
+ "tx_pps": 8184198,
+ "tx_pkts": 81338646,
+ "drop_percentage": 91.68894328533572
+ },
+ {
+ "rx_pps": 1311747.3568787286,
+ "rx_pkts": 13036804,
+ "time_ms": 1648525275367,
+ "drop_pct": 27632521,
+ "total_tx_pps": 4066932,
+ "tx_pps": 4092098,
+ "tx_pkts": 40669325,
+ "drop_percentage": 67.94438068495113
+ },
+ {
+ "rx_pps": 1590695.3692736912,
+ "rx_pkts": 15809129,
+ "time_ms": 1648525287882,
+ "drop_pct": 4525523,
+ "total_tx_pps": 2033465,
+ "tx_pps": 2046048,
+ "tx_pkts": 20334652,
+ "drop_percentage": 22.255227185594325
+ },
+ {
+ "rx_pps": 1019699.6569069418,
+ "rx_pkts": 10134290,
+ "time_ms": 1648525300401,
+ "drop_pct": 33039,
+ "total_tx_pps": 1016732,
+ "tx_pps": 1023024,
+ "tx_pkts": 10167329,
+ "drop_percentage": 0.32495260062893605
+ },
+ {
+ "rx_pps": 511492.9830606495,
+ "rx_pkts": 5083477,
+ "time_ms": 1648525312928,
+ "drop_pct": 189,
+ "total_tx_pps": 508366,
+ "tx_pps": 511512,
+ "tx_pkts": 5083666,
+ "drop_percentage": 0.0037177894849897693
+ },
+ {
+ "rx_pps": 255756.0,
+ "rx_pkts": 2541834,
+ "time_ms": 1648525325435,
+ "drop_pct": 0,
+ "total_tx_pps": 254183,
+ "tx_pps": 255756,
+ "tx_pkts": 2541834,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 383633.4969064324,
+ "rx_pkts": 3812745,
+ "time_ms": 1648525337929,
+ "drop_pct": 5,
+ "total_tx_pps": 381275,
+ "tx_pps": 383634,
+ "tx_pkts": 3812750,
+ "drop_percentage": 0.0001311389417087404
+ },
+ {
+ "rx_pps": 447538.0591777257,
+ "rx_pkts": 4456812,
+ "time_ms": 1648525350446,
+ "drop_pct": 338,
+ "total_tx_pps": 445715,
+ "tx_pps": 447572,
+ "tx_pkts": 4457150,
+ "drop_percentage": 0.007583321180575031
+ },
+ {
+ "rx_pps": 415568.9970519043,
+ "rx_pkts": 4130135,
+ "time_ms": 1648525362946,
+ "drop_pct": 328,
+ "total_tx_pps": 413046,
+ "tx_pps": 415602,
+ "tx_pkts": 4130463,
+ "drop_percentage": 0.00794099838202158
+ },
+ {
+ "rx_pps": 399576.8469448261,
+ "rx_pkts": 3971198,
+ "time_ms": 1648525375442,
+ "drop_pct": 409,
+ "total_tx_pps": 397160,
+ "tx_pps": 399618,
+ "tx_pkts": 3971607,
+ "ndr_pps": 191817,
+ "drop_percentage": 0.010298098477518043
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "14202ba37ebc4fdea8f16b0278600b2d"
+ },
+ "synthesis": {
+ "avg_delay_usec": 101.9999483311892,
+ "total_tx_rate": 381275
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_9000-fc_100k-rate_ndr-2.json",
+ "frame_sizes": [
+ "9000"
+ ],
+ "rate": "ndr",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-29 03:52:45",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "2410629fde18450796d4b2a0329b7475",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "9000"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_9000-fc_100k-rate_ndr-2.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "9000"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2519,
+ 2504
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_9000-fc_100k-rate_ndr-2.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "9000": {
+ "ndr": {
+ "load_percent_per_direction": 38.0859375,
+ "timestamp_sec": 1648526108.2238886,
+ "stats": {
+ "total_tx_rate": 262248,
+ "overall": {
+ "rx_pkts": 2622479,
+ "drop_percentage": 0.00038131713803184685,
+ "drop_pct": 10,
+ "max_delay_usec": 6043,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 2622489,
+ "avg_delay_usec": 797.498445936078,
+ "min_delay_usec": 77,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1311168,
+ "min_delay_usec": 77,
+ "drop_pct": 10,
+ "max_delay_usec": 5571,
+ "tx_pkts": 1311311,
+ "avg_delay_usec": 826,
+ "drop_percentage": 0.0007625956008910168
+ },
+ "0": {
+ "rx_pkts": 1311311,
+ "min_delay_usec": 78,
+ "drop_pct": 0,
+ "max_delay_usec": 6043,
+ "tx_pkts": 1311178,
+ "avg_delay_usec": 769,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 18923815680.0,
+ "theoretical_tx_rate_pps": 692904.6563192905
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 76.171875,
+ "duration_sec": 10.0,
+ "l2frame_size": "9000",
+ "rate_pps": 263898,
+ "rate_bps": 19042968750.0,
+ "time_taken_sec": 137.70801401138306
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 275136.87051549257,
+ "rx_pkts": 2732413,
+ "time_ms": 1648525983002,
+ "drop_pct": 4148889,
+ "total_tx_pps": 688130,
+ "tx_pps": 692904,
+ "tx_pkts": 6881302,
+ "drop_percentage": 60.2922092359847
+ },
+ {
+ "rx_pps": 276450.51010692323,
+ "rx_pkts": 2747283,
+ "time_ms": 1648525995501,
+ "drop_pct": 695654,
+ "total_tx_pps": 344293,
+ "tx_pps": 346452,
+ "tx_pkts": 3442937,
+ "drop_percentage": 20.2052491811497
+ },
+ {
+ "rx_pps": 173226.0,
+ "rx_pkts": 1721608,
+ "time_ms": 1648526007998,
+ "drop_pct": 0,
+ "total_tx_pps": 172160,
+ "tx_pps": 173226,
+ "tx_pkts": 1721608,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 259838.0,
+ "rx_pkts": 2582273,
+ "time_ms": 1648526020514,
+ "drop_pct": 0,
+ "total_tx_pps": 258227,
+ "tx_pps": 259838,
+ "tx_pkts": 2582273,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 276532.862184301,
+ "rx_pkts": 2748324,
+ "time_ms": 1648526033023,
+ "drop_pct": 264475,
+ "total_tx_pps": 301279,
+ "tx_pps": 303144,
+ "tx_pkts": 3012799,
+ "drop_percentage": 8.77838183031792
+ },
+ {
+ "rx_pps": 276802.02633522433,
+ "rx_pkts": 2750861,
+ "time_ms": 1648526045525,
+ "drop_pct": 46609,
+ "total_tx_pps": 279747,
+ "tx_pps": 281492,
+ "tx_pkts": 2797470,
+ "drop_percentage": 1.6661125945944013
+ },
+ {
+ "rx_pps": 270650.71832178126,
+ "rx_pkts": 2689863,
+ "time_ms": 1648526058023,
+ "drop_pct": 132,
+ "total_tx_pps": 268999,
+ "tx_pps": 270664,
+ "tx_pkts": 2689995,
+ "drop_percentage": 0.004907072317978286
+ },
+ {
+ "rx_pps": 265244.0511173625,
+ "rx_pkts": 2636129,
+ "time_ms": 1648526070614,
+ "drop_pct": 79,
+ "total_tx_pps": 263620,
+ "tx_pps": 265252,
+ "tx_pkts": 2636208,
+ "drop_percentage": 0.0029967286344628344
+ },
+ {
+ "rx_pps": 262543.7987422155,
+ "rx_pkts": 2609030,
+ "time_ms": 1648526083208,
+ "drop_pct": 2,
+ "total_tx_pps": 260903,
+ "tx_pps": 262544,
+ "tx_pkts": 2609032,
+ "drop_percentage": 7.665678305210515e-05
+ },
+ {
+ "rx_pps": 263896.99371169903,
+ "rx_pkts": 2622479,
+ "time_ms": 1648526095706,
+ "drop_pct": 10,
+ "total_tx_pps": 262248,
+ "tx_pps": 263898,
+ "tx_pkts": 2622489,
+ "drop_percentage": 0.00038131713803184685
+ },
+ {
+ "rx_pps": 264566.1509460084,
+ "rx_pkts": 2629127,
+ "time_ms": 1648526108223,
+ "drop_pct": 78,
+ "total_tx_pps": 262920,
+ "tx_pps": 264574,
+ "tx_pkts": 2629205,
+ "ndr_pps": 131949,
+ "drop_percentage": 0.0029666762386348724
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "2410629fde18450796d4b2a0329b7475"
+ },
+ "synthesis": {
+ "avg_delay_usec": 797.498445936078,
+ "total_tx_rate": 262248
+ }
+ }
+ ]
+ },
+ "fail_tests": 0,
+ "total_tests": 1,
+ "pass_tests": 1
+ }
+ }
+ ]
+}
diff --git a/test/ut_behave_tests/test_data/project=nfvbench&case=characterization&criteria=PASS&page=2.json b/test/ut_behave_tests/test_data/project=nfvbench&case=characterization&criteria=PASS&page=2.json
new file mode 100644
index 0000000..c0ddacf
--- /dev/null
+++ b/test/ut_behave_tests/test_data/project=nfvbench&case=characterization&criteria=PASS&page=2.json
@@ -0,0 +1,25065 @@
+{
+ "pagination": {
+ "current_page": 2,
+ "total_pages": 2
+ },
+ "results": [
+ {
+ "project_name": "nfvbench",
+ "scenario": "os-nosdn-nofeature-noha",
+ "stop_date": "2022-03-03 08:10:22",
+ "case_name": "characterization",
+ "build_tag": "GUB6K4FMHSH1",
+ "version": "unknown",
+ "pod_name": "AMICAL",
+ "criteria": "PASS",
+ "installer": "unknown",
+ "_id": "622077f1c0d88e001ce40a5e",
+ "start_date": "2022-03-03 04:25:55",
+ "details": {
+ "tests": [
+ {
+ "status": "passed",
+ "elements": [
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.1 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00011944770812988281,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "64 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "64"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.870529174804688e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "128 flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "128"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.512901306152344e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.655952453613281e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 20.04898452758789,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 441.4580554962158,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.0001373291015625,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0002956390380859375,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:17",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.2 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.894371032714844e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "128 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "128"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 0.00010991096496582031,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "128 flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "128"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.703636169433594e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.369850158691406e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007940292358398438,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 433.3887722492218,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00011849403381347656,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.00028204917907714844,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:18",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.3 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.846687316894531e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "256 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "256"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.655952453613281e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "128 flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "128"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.226799011230469e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.226799011230469e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007737398147583008,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 433.3920896053314,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00012111663818359375,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.00031113624572753906,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:19",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.4 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.799003601074219e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "512 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "512"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.560585021972656e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "128 flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "128"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.393692016601562e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.584426879882812e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007782936096191406,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 433.3988313674927,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00012111663818359375,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.00032019615173339844,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:20",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.5 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.72747802734375e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "768 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "768"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.441375732421875e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "128 flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "128"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.274482727050781e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.417533874511719e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007817983627319336,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 433.39960050582886,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00013256072998046875,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0002803802490234375,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:21",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.6 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00012063980102539062,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "1024 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "1024"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.322166442871094e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "128 flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "128"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.179115295410156e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.036064147949219e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007714271545410156,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 433.40483140945435,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00014662742614746094,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0002925395965576172,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:22",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.7 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010037422180175781,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "1280 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "1280"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.393692016601562e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "128 flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "128"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.322166442871094e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 0.00011348724365234375,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007891654968261719,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 433.40072679519653,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00012135505676269531,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.00030994415283203125,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:23",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.8 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.965896606445312e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "1518 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "1518"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.5367431640625e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "128 flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "128"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.34600830078125e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.679794311523438e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007767915725708008,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 433.39458751678467,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00013685226440429688,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.00031065940856933594,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:24",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.9 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.0001201629638671875,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "IMIX frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "IMIX"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 0.00010800361633300781,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "128 flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "128"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.34600830078125e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.298324584960938e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007948875427246094,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 433.39232301712036,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.0001227855682373047,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.00029540061950683594,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:25",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.10 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.703636169433594e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "9000 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "9000"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.799003601074219e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "128 flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "128"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.274482727050781e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.274482727050781e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.0077228546142578125,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 433.4036717414856,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00011873245239257812,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0002994537353515625,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:26",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.11 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.72747802734375e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "64 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "64"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.489059448242188e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "10k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "10k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.775161743164062e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.465217590332031e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007776737213134766,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 439.41271233558655,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00012230873107910156,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0002951622009277344,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:27",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.12 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.799003601074219e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "128 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "128"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.465217590332031e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "10k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "10k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.465217590332031e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.202957153320312e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007769107818603516,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 439.44420289993286,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00012922286987304688,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0003147125244140625,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:28",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.13 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00011992454528808594,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "256 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "256"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.632110595703125e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "10k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "10k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.417533874511719e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 0.00010967254638671875,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007972955703735352,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 439.41557693481445,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.0001201629638671875,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0002875328063964844,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:29",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.14 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00011610984802246094,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "512 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "512"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.489059448242188e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "10k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "10k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.202957153320312e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.131431579589844e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007865667343139648,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 439.4459092617035,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00013709068298339844,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0003178119659423828,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:30",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.15 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010061264038085938,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "768 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "768"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.608268737792969e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "10k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "10k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.417533874511719e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.608268737792969e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007863044738769531,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 439.40875816345215,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00011682510375976562,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0002982616424560547,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:31",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.16 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.751319885253906e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "1024 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "1024"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.393692016601562e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "10k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "10k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.393692016601562e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.465217590332031e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007781267166137695,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 439.41113471984863,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00014781951904296875,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0002956390380859375,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:32",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.17 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.655952453613281e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "1280 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "1280"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 0.00010752677917480469,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "10k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "10k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.512901306152344e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.179115295410156e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.00796818733215332,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 439.41015791893005,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00012063980102539062,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.00030732154846191406,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:33",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.18 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.775161743164062e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "1518 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "1518"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.417533874511719e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "10k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "10k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.202957153320312e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.393692016601562e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007746458053588867,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 439.46103525161743,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00012159347534179688,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0002970695495605469,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:34",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.19 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.846687316894531e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "IMIX frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "IMIX"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.942054748535156e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "10k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "10k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.799003601074219e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.560585021972656e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007760763168334961,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 439.40750312805176,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00012063980102539062,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0003159046173095703,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:35",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.20 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010085105895996094,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "9000 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "9000"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.632110595703125e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "10k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "10k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.489059448242188e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.655952453613281e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.0077402591705322266,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 439.42182779312134,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00011897087097167969,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.00030732154846191406,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:36",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.21 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.775161743164062e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "64 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "64"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.417533874511719e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.226799011230469e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 0.00011372566223144531,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007884979248046875,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 439.4939408302307,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00012111663818359375,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0003120899200439453,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:37",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.22 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010085105895996094,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "128 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "128"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.584426879882812e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 0.00011324882507324219,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.393692016601562e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007754087448120117,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 439.453311920166,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.0001404285430908203,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0003037452697753906,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:38",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.23 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.918212890625e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "256 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "256"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.679794311523438e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.369850158691406e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.179115295410156e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007740497589111328,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 439.5027401447296,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00013017654418945312,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0002994537353515625,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:39",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.24 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.751319885253906e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "512 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "512"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 0.00010919570922851562,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.369850158691406e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 0.00010466575622558594,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007869720458984375,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 439.4968614578247,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00012063980102539062,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0003190040588378906,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:40",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.25 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010085105895996094,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "768 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "768"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.441375732421875e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.369850158691406e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.608268737792969e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007755756378173828,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 439.41006350517273,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00011754035949707031,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.00030159950256347656,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:41",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.26 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010013580322265625,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "1024 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "1024"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.703636169433594e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 0.00011706352233886719,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.417533874511719e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.0077631473541259766,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 439.4135572910309,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00011944770812988281,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.00028061866760253906,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:42",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.27 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00012302398681640625,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "1280 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "1280"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.584426879882812e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.584426879882812e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 0.00011610984802246094,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007807254791259766,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 439.4129407405853,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00011730194091796875,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.00029850006103515625,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:43",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.28 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.632110595703125e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "1518 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "1518"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.441375732421875e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.226799011230469e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.465217590332031e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007798910140991211,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 439.42279505729675,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.0001201629638671875,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.00031757354736328125,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:44",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.29 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.870529174804688e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "IMIX frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "IMIX"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.489059448242188e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.417533874511719e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.584426879882812e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007747650146484375,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 439.46680998802185,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00011920928955078125,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.00030684471130371094,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:45",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size and flow count -- @1.30 Frame sizes and flow counts",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.870529174804688e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "9000 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "9000"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.5367431640625e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.417533874511719e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.512901306152344e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.008136987686157227,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 441.5627624988556,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.0001380443572998047,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0003027915954589844,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:46",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a latency test for a defined frame size and throughput percentage -- @1.1 Frame sizes and throughput percentages",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "latency"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:51",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.846687316894531e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "TRex is restarted",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:52",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:99"
+ },
+ "result": {
+ "duration": 9.1552734375e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "64 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:53",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "64"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 0.00012063980102539062,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:54",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.584426879882812e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "70% rate of previous scenario",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:55",
+ "match": {
+ "arguments": [
+ {
+ "name": "percentage_rate",
+ "value": "70%"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:129"
+ },
+ "result": {
+ "duration": 0.00023174285888671875,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:56",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007772684097290039,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "run is started and waiting for result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:57",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 40.20964193344116,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:58",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.0001323223114013672,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:62",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a latency test for a defined frame size and throughput percentage -- @1.2 Frame sizes and throughput percentages",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "latency"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:51",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010061264038085938,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "TRex is restarted",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:52",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:99"
+ },
+ "result": {
+ "duration": 9.489059448242188e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "64 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:53",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "64"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 0.00010657310485839844,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:54",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.250640869140625e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "90% rate of previous scenario",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:55",
+ "match": {
+ "arguments": [
+ {
+ "name": "percentage_rate",
+ "value": "90%"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:129"
+ },
+ "result": {
+ "duration": 0.00022912025451660156,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:56",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.008083343505859375,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "run is started and waiting for result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:57",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 40.24647831916809,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:58",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00013446807861328125,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:63",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a latency test for a defined frame size and throughput percentage -- @1.3 Frame sizes and throughput percentages",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "latency"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:51",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.942054748535156e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "TRex is restarted",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:52",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:99"
+ },
+ "result": {
+ "duration": 9.393692016601562e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "768 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:53",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "768"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 0.00010704994201660156,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:54",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.441375732421875e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "70% rate of previous scenario",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:55",
+ "match": {
+ "arguments": [
+ {
+ "name": "percentage_rate",
+ "value": "70%"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:129"
+ },
+ "result": {
+ "duration": 0.000244140625,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:56",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.008151054382324219,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "run is started and waiting for result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:57",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 38.257242918014526,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:58",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.0001327991485595703,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:64",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a latency test for a defined frame size and throughput percentage -- @1.4 Frame sizes and throughput percentages",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "latency"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:51",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.846687316894531e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "TRex is restarted",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:52",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:99"
+ },
+ "result": {
+ "duration": 9.369850158691406e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "768 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:53",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "768"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 0.00010466575622558594,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:54",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.322166442871094e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "90% rate of previous scenario",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:55",
+ "match": {
+ "arguments": [
+ {
+ "name": "percentage_rate",
+ "value": "90%"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:129"
+ },
+ "result": {
+ "duration": 0.00023818016052246094,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:56",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.008000850677490234,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "run is started and waiting for result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:57",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 38.23027515411377,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:58",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00013971328735351562,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:65",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a latency test for a defined frame size and throughput percentage -- @1.5 Frame sizes and throughput percentages",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "latency"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:51",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010228157043457031,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "TRex is restarted",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:52",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:99"
+ },
+ "result": {
+ "duration": 9.799003601074219e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "1518 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:53",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "1518"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 0.00011301040649414062,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:54",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 0.00010156631469726562,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "70% rate of previous scenario",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:55",
+ "match": {
+ "arguments": [
+ {
+ "name": "percentage_rate",
+ "value": "70%"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:129"
+ },
+ "result": {
+ "duration": 0.00023365020751953125,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:56",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007997751235961914,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "run is started and waiting for result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:57",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 40.18446683883667,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:58",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00013399124145507812,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:66",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a latency test for a defined frame size and throughput percentage -- @1.6 Frame sizes and throughput percentages",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "latency"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:51",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.989738464355469e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "TRex is restarted",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:52",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:99"
+ },
+ "result": {
+ "duration": 9.489059448242188e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "1518 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:53",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "1518"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 0.00012946128845214844,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:54",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.608268737792969e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "90% rate of previous scenario",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:55",
+ "match": {
+ "arguments": [
+ {
+ "name": "percentage_rate",
+ "value": "90%"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:129"
+ },
+ "result": {
+ "duration": 0.00023436546325683594,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:56",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.007965087890625,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "run is started and waiting for result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:57",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 40.255555391311646,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:58",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00013446807861328125,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:67",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a latency test for a defined frame size and throughput percentage -- @1.7 Frame sizes and throughput percentages",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "latency"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:51",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010013580322265625,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "TRex is restarted",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:52",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:99"
+ },
+ "result": {
+ "duration": 9.608268737792969e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "9000 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:53",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "9000"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 0.00010895729064941406,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:54",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.72747802734375e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "70% rate of previous scenario",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:55",
+ "match": {
+ "arguments": [
+ {
+ "name": "percentage_rate",
+ "value": "70%"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:129"
+ },
+ "result": {
+ "duration": 0.00023174285888671875,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:56",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.008159637451171875,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "run is started and waiting for result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:57",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 38.21106767654419,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:58",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.0001327991485595703,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:68",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a latency test for a defined frame size and throughput percentage -- @1.8 Frame sizes and throughput percentages",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "latency"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:51",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010037422180175781,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "TRex is restarted",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:52",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:99"
+ },
+ "result": {
+ "duration": 0.00011754035949707031,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "9000 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:53",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "9000"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 0.00010704994201660156,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:54",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.751319885253906e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "90% rate of previous scenario",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:55",
+ "match": {
+ "arguments": [
+ {
+ "name": "percentage_rate",
+ "value": "90%"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:129"
+ },
+ "result": {
+ "duration": 0.00027060508728027344,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:56",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.008315563201904297,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "run is started and waiting for result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:57",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 38.238194704055786,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:58",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00013208389282226562,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:69",
+ "type": "scenario"
+ }
+ ],
+ "name": "characterization",
+ "keyword": "Feature",
+ "tags": [
+ "characterization"
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/characterization-full.feature:2"
+ }
+ ],
+ "skip_tests": 0,
+ "links": [
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/xtesting.log",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_768-fc_100k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_128-fc_128-rate_ndr-0.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_1518-fc_100k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_512-fc_100k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_64-fc_128-rate_ndr-2.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_9000-fc_10k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_1280-fc_100k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_1024-fc_128-rate_ndr-0.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_64-fc_128-rate_ndr-1.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_64-fc_10k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_768-fc_10k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_128-fc_128-rate_ndr-2.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_IMIX-fc_10k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_256-fc_10k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_9000-fc_100k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/output.html",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_1024-fc_128-rate_ndr-1.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_512-fc_128-rate_ndr-1.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_256-fc_100k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_256-fc_128-rate_ndr-2.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_1024-fc_100k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_128-fc_10k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_9000-fc_100k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_64-fc_100k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-latency-fs_64-fc_100k-rate_70%.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_1280-fc_128-rate_ndr-2.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_256-fc_100k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_512-fc_10k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_768-fc_10k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_768-fc_128-rate_ndr-0.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_512-fc_100k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_IMIX-fc_100k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_64-fc_100k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_1024-fc_100k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_1280-fc_100k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_128-fc_128-rate_ndr-1.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_128-fc_100k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_9000-fc_128-rate_ndr-0.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_9000-fc_128-rate_ndr-1.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_IMIX-fc_128-rate_ndr-1.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_768-fc_10k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_1280-fc_10k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_IMIX-fc_100k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_IMIX-fc_128-rate_ndr-2.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_IMIX-fc_10k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_1518-fc_100k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/behave_tests.log",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_128-fc_10k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-latency-fs_9000-fc_100k-rate_70%.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_512-fc_128-rate_ndr-0.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_9000-fc_128-rate_ndr-2.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_768-fc_100k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/campaign_result.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_9000-fc_10k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_512-fc_10k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_256-fc_10k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_128-fc_100k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-latency-fs_768-fc_100k-rate_90%.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_IMIX-fc_128-rate_ndr-0.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_1280-fc_100k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_64-fc_100k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_1518-fc_128-rate_ndr-0.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/TESTS-characterization-full.xml",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-latency-fs_1518-fc_100k-rate_90%.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_1518-fc_10k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_9000-fc_100k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_256-fc_10k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_64-fc_128-rate_ndr-0.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_1024-fc_128-rate_ndr-2.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_1518-fc_100k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_9000-fc_10k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_1024-fc_10k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_1024-fc_100k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_256-fc_100k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_IMIX-fc_10k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_512-fc_100k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_1024-fc_10k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_1280-fc_128-rate_ndr-0.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_1280-fc_128-rate_ndr-1.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_768-fc_128-rate_ndr-2.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_512-fc_10k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_1518-fc_10k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_768-fc_100k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-latency-fs_64-fc_100k-rate_90%.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_256-fc_128-rate_ndr-0.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_1518-fc_128-rate_ndr-1.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-latency-fs_768-fc_100k-rate_70%.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_256-fc_128-rate_ndr-1.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench.log",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_1518-fc_128-rate_ndr-2.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_64-fc_10k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-latency-fs_9000-fc_100k-rate_90%.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_IMIX-fc_100k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_1518-fc_10k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_1280-fc_10k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_512-fc_128-rate_ndr-2.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_128-fc_10k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_768-fc_128-rate_ndr-1.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-latency-fs_1518-fc_100k-rate_70%.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_1024-fc_10k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_64-fc_10k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_128-fc_100k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/output.json",
+ "http://172.20.73.203:8181/GUB6K4FMHSH1/nfvbench-amical-e2e-intensive-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_characterization-run-7/characterization/nfvbench-throughput-fs_1280-fc_10k-rate_ndr-1.json"
+ ],
+ "results": {
+ "latency": [
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.intensive",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_64-fc_100k-rate_70%.json",
+ "frame_sizes": [
+ "64"
+ ],
+ "rate": "70%",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc6_intensive",
+ "restart": "true"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-03 08:05:30",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": "true",
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "05da7928f54347d98272aae0eb8ccf68",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "202197pps",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "64"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": false,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_64-fc_100k-rate_70%.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": true,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "64"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2504,
+ 2515
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc6_intensive",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.intensive",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_64-fc_100k-rate_70%.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "64": {
+ "run_config": {
+ "direction-forward": {
+ "rx": {
+ "rate_percent": 0.2706993408,
+ "rate_pps": 100706,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 67674835
+ },
+ "tx": {
+ "rate_percent": 0.2707356288,
+ "rate_pps": 100720,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 67683907
+ },
+ "orig": {
+ "rate_percent": 0.271752768,
+ "rate_pps": 101098,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 67938192
+ }
+ },
+ "direction-total": {
+ "rx": {
+ "rate_percent": 0.5414347008,
+ "rate_pps": 201426.0,
+ "rate_bps": 135358675.0
+ },
+ "tx": {
+ "rate_percent": 0.5414709888,
+ "rate_pps": 201440.0,
+ "rate_bps": 135367747.0
+ },
+ "orig": {
+ "rate_percent": 0.543505536,
+ "rate_pps": 202196.0,
+ "rate_bps": 135876384.0
+ }
+ },
+ "direction-reverse": {
+ "rx": {
+ "rate_percent": 0.27073536,
+ "rate_pps": 100720,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 67683840
+ },
+ "tx": {
+ "rate_percent": 0.27073536,
+ "rate_pps": 100720,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 67683840
+ },
+ "orig": {
+ "rate_percent": 0.271752768,
+ "rate_pps": 101098,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 67938192
+ }
+ }
+ },
+ "packet_path_stats": {
+ "Forward": {
+ "interfaces": [
+ "TRex.TX.p0",
+ "TRex.RX.p1"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 1006353,
+ "-127 (-0.0126%)"
+ ],
+ "lat_max_usec": 6319,
+ "lat_avg_usec": 343,
+ "lat_min_usec": 55,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ },
+ "Reverse": {
+ "interfaces": [
+ "TRex.TX.p1",
+ "TRex.RX.p0"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 1007200,
+ 1007200
+ ],
+ "lat_max_usec": 16679,
+ "lat_avg_usec": 332,
+ "lat_min_usec": 39,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ }
+ },
+ "stats": {
+ "total_tx_rate": 201440,
+ "overall": {
+ "drop_rate_percent": 0.006701744091667946,
+ "rx": {
+ "dropped_pkts": 135,
+ "pkt_bit_rate": 54798412.0,
+ "pkt_rate": 100732.0,
+ "max_delay_usec": 16679,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "avg_delay_usec": 337.50036589010585,
+ "total_pkt_bytes": 136970088,
+ "total_pkts": 2014266,
+ "min_delay_usec": 39
+ },
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg=",
+ "tx": {
+ "total_pkt_bytes": 136979268,
+ "total_pkts": 2014401,
+ "pkt_bit_rate": 54796758.0,
+ "pkt_rate": 100728.5
+ }
+ },
+ "1": {
+ "drop_rate_percent": 0.01340349483717236,
+ "rx": {
+ "dropped_pkts": 135,
+ "pkt_bit_rate": 54797180,
+ "pkt_rate": 100730,
+ "max_delay_usec": 16679,
+ "total_pkt_bytes": 68480488,
+ "avg_delay_usec": 332,
+ "total_pkts": 1007066,
+ "min_delay_usec": 39
+ },
+ "tx": {
+ "total_pkt_bytes": 68489600,
+ "total_pkts": 1007200,
+ "pkt_bit_rate": 54796540,
+ "pkt_rate": 100728
+ }
+ },
+ "0": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 54799644,
+ "pkt_rate": 100734,
+ "max_delay_usec": 6319,
+ "total_pkt_bytes": 68489600,
+ "avg_delay_usec": 343,
+ "total_pkts": 1007200,
+ "min_delay_usec": 55
+ },
+ "tx": {
+ "total_pkt_bytes": 68489668,
+ "total_pkts": 1007201,
+ "pkt_bit_rate": 54796976,
+ "pkt_rate": 100729
+ }
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 135367680.0,
+ "theoretical_tx_rate_pps": 74404761.90476191
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "05da7928f54347d98272aae0eb8ccf68"
+ },
+ "synthesis": {
+ "avg_delay_usec": 337.50036589010585,
+ "total_tx_rate": 201440
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.intensive",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_64-fc_100k-rate_90%.json",
+ "frame_sizes": [
+ "64"
+ ],
+ "rate": "90%",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc6_intensive",
+ "restart": "true"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-03 08:06:11",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": "true",
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "2eb5c2020c5149db9e10bab584e2dbf6",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "259968pps",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "64"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": false,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_64-fc_100k-rate_90%.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": true,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "64"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2504,
+ 2515
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc6_intensive",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.intensive",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_64-fc_100k-rate_90%.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "64": {
+ "run_config": {
+ "direction-forward": {
+ "rx": {
+ "rate_percent": 0.34818819840000004,
+ "rate_pps": 129534,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 87047049
+ },
+ "tx": {
+ "rate_percent": 0.3481965312,
+ "rate_pps": 129537,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 87049132
+ },
+ "orig": {
+ "rate_percent": 0.349396992,
+ "rate_pps": 129984,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 87349248
+ }
+ },
+ "direction-total": {
+ "rx": {
+ "rate_percent": 0.696405696,
+ "rate_pps": 259079.0,
+ "rate_bps": 174101423.0
+ },
+ "tx": {
+ "rate_percent": 0.6964140288,
+ "rate_pps": 259082.0,
+ "rate_bps": 174103506.0
+ },
+ "orig": {
+ "rate_percent": 0.698793984,
+ "rate_pps": 259968.0,
+ "rate_bps": 174698496.0
+ }
+ },
+ "direction-reverse": {
+ "rx": {
+ "rate_percent": 0.3482174976,
+ "rate_pps": 129545,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 87054374
+ },
+ "tx": {
+ "rate_percent": 0.3482174976,
+ "rate_pps": 129545,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 87054374
+ },
+ "orig": {
+ "rate_percent": 0.349396992,
+ "rate_pps": 129984,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 87349248
+ }
+ }
+ },
+ "packet_path_stats": {
+ "Forward": {
+ "interfaces": [
+ "TRex.TX.p0",
+ "TRex.RX.p1"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 1294246,
+ "+14 (+0.0011%)"
+ ],
+ "lat_max_usec": 5982,
+ "lat_avg_usec": 438,
+ "lat_min_usec": 53,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ },
+ "Reverse": {
+ "interfaces": [
+ "TRex.TX.p1",
+ "TRex.RX.p0"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 1295452,
+ 1295452
+ ],
+ "lat_max_usec": 12890,
+ "lat_avg_usec": 403,
+ "lat_min_usec": 79,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ }
+ },
+ "stats": {
+ "total_tx_rate": 259082,
+ "overall": {
+ "drop_rate_percent": 0.0011965296009843964,
+ "rx": {
+ "dropped_pkts": 31,
+ "pkt_bit_rate": 70518144.0,
+ "pkt_rate": 129628.0,
+ "max_delay_usec": 12890,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "avg_delay_usec": 420.50073626049146,
+ "total_pkt_bytes": 176174060,
+ "total_pkts": 2590795,
+ "min_delay_usec": 53
+ },
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg=",
+ "tx": {
+ "total_pkt_bytes": 176176168,
+ "total_pkts": 2590826,
+ "pkt_bit_rate": 70546464.0,
+ "pkt_rate": 129680.5
+ }
+ },
+ "1": {
+ "drop_rate_percent": 0.0023929871581502052,
+ "rx": {
+ "dropped_pkts": 31,
+ "pkt_bit_rate": 70304360,
+ "pkt_rate": 129235,
+ "max_delay_usec": 12890,
+ "total_pkt_bytes": 88083324,
+ "avg_delay_usec": 403,
+ "total_pkts": 1295343,
+ "min_delay_usec": 79
+ },
+ "tx": {
+ "total_pkt_bytes": 88090736,
+ "total_pkts": 1295452,
+ "pkt_bit_rate": 70660064,
+ "pkt_rate": 129889
+ }
+ },
+ "0": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 70731928,
+ "pkt_rate": 130021,
+ "max_delay_usec": 5982,
+ "total_pkt_bytes": 88090736,
+ "avg_delay_usec": 438,
+ "total_pkts": 1295452,
+ "min_delay_usec": 53
+ },
+ "tx": {
+ "total_pkt_bytes": 88085432,
+ "total_pkts": 1295374,
+ "pkt_bit_rate": 70432864,
+ "pkt_rate": 129472
+ }
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 174103104.0,
+ "theoretical_tx_rate_pps": 74404761.90476191
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "2eb5c2020c5149db9e10bab584e2dbf6"
+ },
+ "synthesis": {
+ "avg_delay_usec": 420.50073626049146,
+ "total_tx_rate": 259082
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.intensive",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_768-fc_100k-rate_70%.json",
+ "frame_sizes": [
+ "768"
+ ],
+ "rate": "70%",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc6_intensive",
+ "restart": "true"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-03 08:06:50",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": "true",
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "694c371f3fce42c4ba547b3cc5cbc030",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "204764pps",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "768"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": false,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_768-fc_100k-rate_70%.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": true,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "768"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2504,
+ 2515
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc6_intensive",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.intensive",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_768-fc_100k-rate_70%.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "768": {
+ "run_config": {
+ "direction-forward": {
+ "rx": {
+ "rate_percent": 2.5720017408,
+ "rate_pps": 101998,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 643000435
+ },
+ "tx": {
+ "rate_percent": 2.5720017408,
+ "rate_pps": 101998,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 643000435
+ },
+ "orig": {
+ "rate_percent": 2.5816645119999997,
+ "rate_pps": 102382,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 645416128
+ }
+ },
+ "direction-total": {
+ "rx": {
+ "rate_percent": 5.14400096,
+ "rate_pps": 203996.0,
+ "rate_bps": 1286000239.0
+ },
+ "tx": {
+ "rate_percent": 5.14400096,
+ "rate_pps": 203996.0,
+ "rate_bps": 1286000239.0
+ },
+ "orig": {
+ "rate_percent": 5.163329023999999,
+ "rate_pps": 204764.0,
+ "rate_bps": 1290832256.0
+ }
+ },
+ "direction-reverse": {
+ "rx": {
+ "rate_percent": 2.5719992192,
+ "rate_pps": 101998,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 642999804
+ },
+ "tx": {
+ "rate_percent": 2.5719992192,
+ "rate_pps": 101998,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 642999804
+ },
+ "orig": {
+ "rate_percent": 2.5816645119999997,
+ "rate_pps": 102382,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 645416128
+ }
+ }
+ },
+ "packet_path_stats": {
+ "Forward": {
+ "interfaces": [
+ "TRex.TX.p0",
+ "TRex.RX.p1"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 1019120,
+ "+16 (+0.0016%)"
+ ],
+ "lat_max_usec": 6400,
+ "lat_avg_usec": 441,
+ "lat_min_usec": 34,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ },
+ "Reverse": {
+ "interfaces": [
+ "TRex.TX.p1",
+ "TRex.RX.p0"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 1019987,
+ 1019987
+ ],
+ "lat_max_usec": 12992,
+ "lat_avg_usec": 416,
+ "lat_min_usec": 39,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ }
+ },
+ "stats": {
+ "total_tx_rate": 203997,
+ "overall": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 593093792.0,
+ "pkt_rate": 96031.5,
+ "max_delay_usec": 12992,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "avg_delay_usec": 428.4999938724739,
+ "total_pkt_bytes": 1574860700,
+ "total_pkts": 2039975,
+ "min_delay_usec": 34
+ },
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg=",
+ "tx": {
+ "total_pkt_bytes": 1574860700,
+ "total_pkts": 2039975,
+ "pkt_bit_rate": 593058368.0,
+ "pkt_rate": 96025.5
+ }
+ },
+ "1": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 589896256,
+ "pkt_rate": 95514,
+ "max_delay_usec": 12992,
+ "total_pkt_bytes": 787430736,
+ "avg_delay_usec": 416,
+ "total_pkts": 1019988,
+ "min_delay_usec": 39
+ },
+ "tx": {
+ "total_pkt_bytes": 787429964,
+ "total_pkts": 1019987,
+ "pkt_bit_rate": 593190528,
+ "pkt_rate": 96047
+ }
+ },
+ "0": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 596291328,
+ "pkt_rate": 96549,
+ "max_delay_usec": 6400,
+ "total_pkt_bytes": 787429964,
+ "avg_delay_usec": 441,
+ "total_pkts": 1019987,
+ "min_delay_usec": 34
+ },
+ "tx": {
+ "total_pkt_bytes": 787430736,
+ "total_pkts": 1019988,
+ "pkt_bit_rate": 592926208,
+ "pkt_rate": 96004
+ }
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 1285997088.0,
+ "theoretical_tx_rate_pps": 7931472.081218274
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "694c371f3fce42c4ba547b3cc5cbc030"
+ },
+ "synthesis": {
+ "avg_delay_usec": 428.4999938724739,
+ "total_tx_rate": 203997
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.intensive",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_768-fc_100k-rate_90%.json",
+ "frame_sizes": [
+ "768"
+ ],
+ "rate": "90%",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc6_intensive",
+ "restart": "true"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-03 08:07:28",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": "true",
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "9d22db1a0cf34ca0874e09eb8b37c51e",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "263268pps",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "768"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": false,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_768-fc_100k-rate_90%.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": true,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "768"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2504,
+ 2515
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc6_intensive",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.intensive",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_768-fc_100k-rate_90%.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "768": {
+ "run_config": {
+ "direction-forward": {
+ "rx": {
+ "rate_percent": 3.3066320768,
+ "rate_pps": 131132,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 826658019
+ },
+ "tx": {
+ "rate_percent": 3.306674944,
+ "rate_pps": 131134,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 826668736
+ },
+ "orig": {
+ "rate_percent": 3.3192829440000002,
+ "rate_pps": 131634,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 829820736
+ }
+ },
+ "direction-total": {
+ "rx": {
+ "rate_percent": 6.613438144,
+ "rate_pps": 262271.0,
+ "rate_bps": 1653359535.0
+ },
+ "tx": {
+ "rate_percent": 6.6135490944,
+ "rate_pps": 262275.0,
+ "rate_bps": 1653387273.0
+ },
+ "orig": {
+ "rate_percent": 6.6385658880000005,
+ "rate_pps": 263268.0,
+ "rate_bps": 1659641472.0
+ }
+ },
+ "direction-reverse": {
+ "rx": {
+ "rate_percent": 3.3068060672,
+ "rate_pps": 131139,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 826701516
+ },
+ "tx": {
+ "rate_percent": 3.306874150399999,
+ "rate_pps": 131141,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 826718537
+ },
+ "orig": {
+ "rate_percent": 3.3192829440000002,
+ "rate_pps": 131634,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 829820736
+ }
+ }
+ },
+ "packet_path_stats": {
+ "Forward": {
+ "interfaces": [
+ "TRex.TX.p0",
+ "TRex.RX.p1"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 1310232,
+ "-6 (-0.0005%)"
+ ],
+ "lat_max_usec": 1676,
+ "lat_avg_usec": 349,
+ "lat_min_usec": 51,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ },
+ "Reverse": {
+ "interfaces": [
+ "TRex.TX.p1",
+ "TRex.RX.p0"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 1311419,
+ "-27 (-0.0021%)"
+ ],
+ "lat_max_usec": 17335,
+ "lat_avg_usec": 357,
+ "lat_min_usec": 74,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ }
+ },
+ "stats": {
+ "total_tx_rate": 262275,
+ "overall": {
+ "drop_rate_percent": 0.0016776226866441024,
+ "rx": {
+ "dropped_pkts": 44,
+ "pkt_bit_rate": 812587744.0,
+ "pkt_rate": 131571.5,
+ "max_delay_usec": 17335,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "avg_delay_usec": 352.9998947655388,
+ "total_pkt_bytes": 2024735980,
+ "total_pkts": 2622715,
+ "min_delay_usec": 51
+ },
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg=",
+ "tx": {
+ "total_pkt_bytes": 2024769948,
+ "total_pkts": 2622759,
+ "pkt_bit_rate": 812466528.0,
+ "pkt_rate": 131551.5
+ }
+ },
+ "1": {
+ "drop_rate_percent": 0.0012963057573513882,
+ "rx": {
+ "dropped_pkts": 17,
+ "pkt_bit_rate": 812597184,
+ "pkt_rate": 131573,
+ "max_delay_usec": 17335,
+ "total_pkt_bytes": 1012341356,
+ "avg_delay_usec": 357,
+ "total_pkts": 1311323,
+ "min_delay_usec": 74
+ },
+ "tx": {
+ "total_pkt_bytes": 1012415468,
+ "total_pkts": 1311419,
+ "pkt_bit_rate": 812396480,
+ "pkt_rate": 131540
+ }
+ },
+ "0": {
+ "drop_rate_percent": 0.002058962587887199,
+ "rx": {
+ "dropped_pkts": 27,
+ "pkt_bit_rate": 812578304,
+ "pkt_rate": 131570,
+ "max_delay_usec": 1676,
+ "total_pkt_bytes": 1012394624,
+ "avg_delay_usec": 349,
+ "total_pkts": 1311392,
+ "min_delay_usec": 51
+ },
+ "tx": {
+ "total_pkt_bytes": 1012354480,
+ "total_pkts": 1311340,
+ "pkt_bit_rate": 812536576,
+ "pkt_rate": 131563
+ }
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 1653381600.0,
+ "theoretical_tx_rate_pps": 7931472.081218274
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "9d22db1a0cf34ca0874e09eb8b37c51e"
+ },
+ "synthesis": {
+ "avg_delay_usec": 352.9998947655388,
+ "total_tx_rate": 262275
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.intensive",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_1518-fc_100k-rate_70%.json",
+ "frame_sizes": [
+ "1518"
+ ],
+ "rate": "70%",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc6_intensive",
+ "restart": "true"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-03 08:08:07",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": "true",
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "89248933cb70463792a0aa738f17d3e6",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "182233pps",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "1518"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": false,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_1518-fc_100k-rate_70%.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": true,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "1518"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2504,
+ 2515
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc6_intensive",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.intensive",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_1518-fc_100k-rate_70%.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "1518": {
+ "run_config": {
+ "direction-forward": {
+ "rx": {
+ "rate_percent": 4.4675971648,
+ "rate_pps": 90775,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 1116899291
+ },
+ "tx": {
+ "rate_percent": 4.4675971648,
+ "rate_pps": 90775,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 1116899291
+ },
+ "orig": {
+ "rate_percent": 4.484389664,
+ "rate_pps": 91116,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 1121097416
+ }
+ },
+ "direction-total": {
+ "rx": {
+ "rate_percent": 8.9354650176,
+ "rate_pps": 181555.0,
+ "rate_bps": 2233866254.0
+ },
+ "tx": {
+ "rate_percent": 8.9354650176,
+ "rate_pps": 181555.0,
+ "rate_bps": 2233866254.0
+ },
+ "orig": {
+ "rate_percent": 8.968779328,
+ "rate_pps": 182232.0,
+ "rate_bps": 2242194832.0
+ }
+ },
+ "direction-reverse": {
+ "rx": {
+ "rate_percent": 4.4678678528,
+ "rate_pps": 90780,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 1116966963
+ },
+ "tx": {
+ "rate_percent": 4.4678678528,
+ "rate_pps": 90780,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 1116966963
+ },
+ "orig": {
+ "rate_percent": 4.484389664,
+ "rate_pps": 91116,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 1121097416
+ }
+ }
+ },
+ "packet_path_stats": {
+ "Forward": {
+ "interfaces": [
+ "TRex.TX.p0",
+ "TRex.RX.p1"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 906957,
+ "+6 (+0.0007%)"
+ ],
+ "lat_max_usec": 4973,
+ "lat_avg_usec": 370,
+ "lat_min_usec": 59,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ },
+ "Reverse": {
+ "interfaces": [
+ "TRex.TX.p1",
+ "TRex.RX.p0"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 907808,
+ 907808
+ ],
+ "lat_max_usec": 6675,
+ "lat_avg_usec": 341,
+ "lat_min_usec": 92,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ }
+ },
+ "stats": {
+ "total_tx_rate": 181556,
+ "overall": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 1108165952.0,
+ "pkt_rate": 91011.5,
+ "max_delay_usec": 6675,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "avg_delay_usec": 355.5004392581687,
+ "total_pkt_bytes": 2763283842,
+ "total_pkts": 1815561,
+ "min_delay_usec": 59
+ },
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg=",
+ "tx": {
+ "total_pkt_bytes": 2763283842,
+ "total_pkts": 1815561,
+ "pkt_bit_rate": 1107904704.0,
+ "pkt_rate": 90990.0
+ }
+ },
+ "1": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 1108101888,
+ "pkt_rate": 91006,
+ "max_delay_usec": 6675,
+ "total_pkt_bytes": 1381600066,
+ "avg_delay_usec": 341,
+ "total_pkts": 907753,
+ "min_delay_usec": 92
+ },
+ "tx": {
+ "total_pkt_bytes": 1381683776,
+ "total_pkts": 907808,
+ "pkt_bit_rate": 1107890432,
+ "pkt_rate": 90989
+ }
+ },
+ "0": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 1108230016,
+ "pkt_rate": 91017,
+ "max_delay_usec": 4973,
+ "total_pkt_bytes": 1381683776,
+ "avg_delay_usec": 370,
+ "total_pkts": 907808,
+ "min_delay_usec": 59
+ },
+ "tx": {
+ "total_pkt_bytes": 1381600066,
+ "total_pkts": 907753,
+ "pkt_bit_rate": 1107918976,
+ "pkt_rate": 90991
+ }
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 2233865024.0,
+ "theoretical_tx_rate_pps": 4063719.1157347206
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "89248933cb70463792a0aa738f17d3e6"
+ },
+ "synthesis": {
+ "avg_delay_usec": 355.5004392581687,
+ "total_tx_rate": 181556
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.intensive",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_1518-fc_100k-rate_90%.json",
+ "frame_sizes": [
+ "1518"
+ ],
+ "rate": "90%",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc6_intensive",
+ "restart": "true"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-03 08:08:48",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": "true",
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "3d0cbc23b6c14f59b503bd29f8e47bf0",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "234299pps",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "1518"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": false,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_1518-fc_100k-rate_90%.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": true,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "1518"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2504,
+ 2515
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc6_intensive",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.intensive",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_1518-fc_100k-rate_90%.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "1518": {
+ "run_config": {
+ "direction-forward": {
+ "rx": {
+ "rate_percent": 5.7440633408,
+ "rate_pps": 116711,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 1436015835
+ },
+ "tx": {
+ "rate_percent": 5.7440633408,
+ "rate_pps": 116711,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 1436015835
+ },
+ "orig": {
+ "rate_percent": 5.765629792,
+ "rate_pps": 117149,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 1441407448
+ }
+ },
+ "direction-total": {
+ "rx": {
+ "rate_percent": 11.4884711936,
+ "rate_pps": 233429.0,
+ "rate_bps": 2872117798.0
+ },
+ "tx": {
+ "rate_percent": 11.4884711936,
+ "rate_pps": 233429.0,
+ "rate_bps": 2872117798.0
+ },
+ "orig": {
+ "rate_percent": 11.531259584,
+ "rate_pps": 234298.0,
+ "rate_bps": 2882814896.0
+ }
+ },
+ "direction-reverse": {
+ "rx": {
+ "rate_percent": 5.7444078528,
+ "rate_pps": 116718,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 1436101963
+ },
+ "tx": {
+ "rate_percent": 5.7444078528,
+ "rate_pps": 116718,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 1436101963
+ },
+ "orig": {
+ "rate_percent": 5.765629792,
+ "rate_pps": 117149,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 1441407448
+ }
+ }
+ },
+ "packet_path_stats": {
+ "Forward": {
+ "interfaces": [
+ "TRex.TX.p0",
+ "TRex.RX.p1"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 1166133,
+ "+27 (+0.0023%)"
+ ],
+ "lat_max_usec": 658,
+ "lat_avg_usec": 325,
+ "lat_min_usec": 69,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ },
+ "Reverse": {
+ "interfaces": [
+ "TRex.TX.p1",
+ "TRex.RX.p0"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 1167183,
+ 1167183
+ ],
+ "lat_max_usec": 11556,
+ "lat_avg_usec": 331,
+ "lat_min_usec": 66,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ }
+ },
+ "stats": {
+ "total_tx_rate": 233429,
+ "overall": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 1423834560.0,
+ "pkt_rate": 116937.0,
+ "max_delay_usec": 11556,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "avg_delay_usec": 327.99991003711614,
+ "total_pkt_bytes": 3552798512,
+ "total_pkts": 2334296,
+ "min_delay_usec": 66
+ },
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg=",
+ "tx": {
+ "total_pkt_bytes": 3552798512,
+ "total_pkts": 2334296,
+ "pkt_bit_rate": 1424474880.0,
+ "pkt_rate": 116990.0
+ }
+ },
+ "1": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 1423956992,
+ "pkt_rate": 116947,
+ "max_delay_usec": 11556,
+ "total_pkt_bytes": 1776345986,
+ "avg_delay_usec": 331,
+ "total_pkts": 1167113,
+ "min_delay_usec": 66
+ },
+ "tx": {
+ "total_pkt_bytes": 1776452526,
+ "total_pkts": 1167183,
+ "pkt_bit_rate": 1424533632,
+ "pkt_rate": 116994
+ }
+ },
+ "0": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 1423712128,
+ "pkt_rate": 116927,
+ "max_delay_usec": 658,
+ "total_pkt_bytes": 1776452526,
+ "avg_delay_usec": 325,
+ "total_pkts": 1167183,
+ "min_delay_usec": 69
+ },
+ "tx": {
+ "total_pkt_bytes": 1776345986,
+ "total_pkts": 1167113,
+ "pkt_bit_rate": 1424416128,
+ "pkt_rate": 116986
+ }
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 2872110416.0,
+ "theoretical_tx_rate_pps": 4063719.1157347206
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "3d0cbc23b6c14f59b503bd29f8e47bf0"
+ },
+ "synthesis": {
+ "avg_delay_usec": 327.99991003711614,
+ "total_tx_rate": 233429
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.intensive",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_9000-fc_100k-rate_70%.json",
+ "frame_sizes": [
+ "9000"
+ ],
+ "rate": "70%",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc6_intensive",
+ "restart": "true"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-03 08:09:28",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": "true",
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "1b492bc88b2c49cb88be084019d3b19a",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "107335pps",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "9000"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": false,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_9000-fc_100k-rate_70%.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": true,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "9000"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2504,
+ 2515
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc6_intensive",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.intensive",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_9000-fc_100k-rate_70%.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "9000": {
+ "run_config": {
+ "direction-forward": {
+ "rx": {
+ "rate_percent": 15.432253056,
+ "rate_pps": 53465,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 3858063264
+ },
+ "tx": {
+ "rate_percent": 15.432253056,
+ "rate_pps": 53465,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 3858063264
+ },
+ "orig": {
+ "rate_percent": 15.4905872,
+ "rate_pps": 53667,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 3872646800
+ }
+ },
+ "direction-total": {
+ "rx": {
+ "rate_percent": 30.865487488,
+ "rate_pps": 106933.0,
+ "rate_bps": 7716371872.0
+ },
+ "tx": {
+ "rate_percent": 30.865487488,
+ "rate_pps": 106933.0,
+ "rate_bps": 7716371872.0
+ },
+ "orig": {
+ "rate_percent": 30.9811744,
+ "rate_pps": 107334.0,
+ "rate_bps": 7745293600.0
+ }
+ },
+ "direction-reverse": {
+ "rx": {
+ "rate_percent": 15.433234432,
+ "rate_pps": 53468,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 3858308608
+ },
+ "tx": {
+ "rate_percent": 15.433234432,
+ "rate_pps": 53468,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 3858308608
+ },
+ "orig": {
+ "rate_percent": 15.4905872,
+ "rate_pps": 53667,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 3872646800
+ }
+ }
+ },
+ "packet_path_stats": {
+ "Forward": {
+ "interfaces": [
+ "TRex.TX.p0",
+ "TRex.RX.p1"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 534208,
+ "+4 (+0.0007%)"
+ ],
+ "lat_max_usec": 5196,
+ "lat_avg_usec": 342,
+ "lat_min_usec": 65,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ },
+ "Reverse": {
+ "interfaces": [
+ "TRex.TX.p1",
+ "TRex.RX.p0"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 534688,
+ 534688
+ ],
+ "lat_max_usec": 14076,
+ "lat_avg_usec": 332,
+ "lat_min_usec": 74,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ }
+ },
+ "stats": {
+ "total_tx_rate": 106934,
+ "overall": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 3860001152.0,
+ "pkt_rate": 53586.5,
+ "max_delay_usec": 14076,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "avg_delay_usec": 337.00015897626764,
+ "total_pkt_bytes": 9628355368,
+ "total_pkts": 1069342,
+ "min_delay_usec": 65
+ },
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg=",
+ "tx": {
+ "total_pkt_bytes": 9628355368,
+ "total_pkts": 1069342,
+ "pkt_bit_rate": 3860356864.0,
+ "pkt_rate": 53592.0
+ }
+ },
+ "1": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 3860253696,
+ "pkt_rate": 53590,
+ "max_delay_usec": 14076,
+ "total_pkt_bytes": 4814024616,
+ "avg_delay_usec": 332,
+ "total_pkts": 534654,
+ "min_delay_usec": 74
+ },
+ "tx": {
+ "total_pkt_bytes": 4814330752,
+ "total_pkts": 534688,
+ "pkt_bit_rate": 3860350464,
+ "pkt_rate": 53592
+ }
+ },
+ "0": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 3859748608,
+ "pkt_rate": 53583,
+ "max_delay_usec": 5196,
+ "total_pkt_bytes": 4814330752,
+ "avg_delay_usec": 342,
+ "total_pkts": 534688,
+ "min_delay_usec": 65
+ },
+ "tx": {
+ "total_pkt_bytes": 4814024616,
+ "total_pkts": 534654,
+ "pkt_bit_rate": 3860363264,
+ "pkt_rate": 53592
+ }
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 7716357440.0,
+ "theoretical_tx_rate_pps": 692904.6563192905
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "1b492bc88b2c49cb88be084019d3b19a"
+ },
+ "synthesis": {
+ "avg_delay_usec": 337.00015897626764,
+ "total_tx_rate": 106934
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.intensive",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_9000-fc_100k-rate_90%.json",
+ "frame_sizes": [
+ "9000"
+ ],
+ "rate": "90%",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc6_intensive",
+ "restart": "true"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-03 08:10:06",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": "true",
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "6f821bed4865456680f826839bab1081",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "138003pps",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "9000"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": false,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_9000-fc_100k-rate_90%.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": true,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "9000"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2504,
+ 2515
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc6_intensive",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.intensive",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-latency-fs_9000-fc_100k-rate_90%.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "9000": {
+ "run_config": {
+ "direction-forward": {
+ "rx": {
+ "rate_percent": 19.841806336,
+ "rate_pps": 68742,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 4960451584
+ },
+ "tx": {
+ "rate_percent": 19.841806336,
+ "rate_pps": 68742,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 4960451584
+ },
+ "orig": {
+ "rate_percent": 19.916592960000003,
+ "rate_pps": 69001,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 4979148240
+ }
+ },
+ "direction-total": {
+ "rx": {
+ "rate_percent": 39.684853824,
+ "rate_pps": 137488.0,
+ "rate_bps": 9921213456.0
+ },
+ "tx": {
+ "rate_percent": 39.684853824,
+ "rate_pps": 137488.0,
+ "rate_bps": 9921213456.0
+ },
+ "orig": {
+ "rate_percent": 39.833185920000005,
+ "rate_pps": 138002.0,
+ "rate_bps": 9958296480.0
+ }
+ },
+ "direction-reverse": {
+ "rx": {
+ "rate_percent": 19.843047488,
+ "rate_pps": 68746,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 4960761872
+ },
+ "tx": {
+ "rate_percent": 19.843047488,
+ "rate_pps": 68746,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 4960761872
+ },
+ "orig": {
+ "rate_percent": 19.916592960000003,
+ "rate_pps": 69001,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 4979148240
+ }
+ }
+ },
+ "packet_path_stats": {
+ "Forward": {
+ "interfaces": [
+ "TRex.TX.p0",
+ "TRex.RX.p1"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 686848,
+ "+12 (+0.0017%)"
+ ],
+ "lat_max_usec": 921,
+ "lat_avg_usec": 473,
+ "lat_min_usec": 102,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ },
+ "Reverse": {
+ "interfaces": [
+ "TRex.TX.p1",
+ "TRex.RX.p0"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 687467,
+ 687467
+ ],
+ "lat_max_usec": 23660,
+ "lat_avg_usec": 471,
+ "lat_min_usec": 82,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ }
+ },
+ "stats": {
+ "total_tx_rate": 137489,
+ "overall": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 4886032128.0,
+ "pkt_rate": 67831.0,
+ "max_delay_usec": 23660,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "avg_delay_usec": 472.00003127520654,
+ "total_pkt_bytes": 12379518564,
+ "total_pkts": 1374891,
+ "min_delay_usec": 82
+ },
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg=",
+ "tx": {
+ "total_pkt_bytes": 12379518564,
+ "total_pkts": 1374891,
+ "pkt_bit_rate": 4885754880.0,
+ "pkt_rate": 67827.0
+ }
+ },
+ "1": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 4860832768,
+ "pkt_rate": 67481,
+ "max_delay_usec": 23660,
+ "total_pkt_bytes": 6189565696,
+ "avg_delay_usec": 471,
+ "total_pkts": 687424,
+ "min_delay_usec": 82
+ },
+ "tx": {
+ "total_pkt_bytes": 6189952868,
+ "total_pkts": 687467,
+ "pkt_bit_rate": 4887348736,
+ "pkt_rate": 67849
+ }
+ },
+ "0": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 4911231488,
+ "pkt_rate": 68181,
+ "max_delay_usec": 921,
+ "total_pkt_bytes": 6189952868,
+ "avg_delay_usec": 473,
+ "total_pkts": 687467,
+ "min_delay_usec": 102
+ },
+ "tx": {
+ "total_pkt_bytes": 6189565696,
+ "total_pkts": 687424,
+ "pkt_bit_rate": 4884161024,
+ "pkt_rate": 67805
+ }
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 9921206240.0,
+ "theoretical_tx_rate_pps": 692904.6563192905
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "6f821bed4865456680f826839bab1081"
+ },
+ "synthesis": {
+ "avg_delay_usec": 472.00003127520654,
+ "total_tx_rate": 137489
+ }
+ }
+ ],
+ "throughput": [
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.intensive",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_64-fc_128-rate_ndr-2.json",
+ "frame_sizes": [
+ "64"
+ ],
+ "rate": "ndr",
+ "flow_count": "128",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc6_intensive"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-03 04:26:27",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "7dca1c234a4544fa8b4600aeca81a251",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "64"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 128,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_64-fc_128-rate_ndr-0.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "64"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2504,
+ 2515
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc6_intensive",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.intensive",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_64-fc_128-rate_ndr-0.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "64": {
+ "ndr": {
+ "load_percent_per_direction": 0.29296875,
+ "timestamp_sec": 1646281727.2934198,
+ "stats": {
+ "total_tx_rate": 216641,
+ "overall": {
+ "rx_pkts": 2166416,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 3395,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 2166416,
+ "avg_delay_usec": 345.5001269377627,
+ "min_delay_usec": 48,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1083153,
+ "min_delay_usec": 48,
+ "drop_pct": 0,
+ "max_delay_usec": 2779,
+ "tx_pkts": 1083263,
+ "avg_delay_usec": 343,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 1083263,
+ "min_delay_usec": 58,
+ "drop_pct": 0,
+ "max_delay_usec": 3395,
+ "tx_pkts": 1083153,
+ "avg_delay_usec": 348,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 145582752.0,
+ "theoretical_tx_rate_pps": 74404761.90476191
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 0.5859375,
+ "duration_sec": 10.0,
+ "l2frame_size": "64",
+ "rate_pps": 217982,
+ "rate_bps": 146484374.0,
+ "time_taken_sec": 137.62811660766602
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 1420502.8540113333,
+ "rx_pkts": 5016530,
+ "time_ms": 1646281602204,
+ "drop_pct": 257745146,
+ "total_tx_pps": 26276167,
+ "tx_pps": 74404760,
+ "tx_pkts": 262761676,
+ "warning": "WARNING: There is a significant difference between requested TX rate (74404760) and actual TX rate (26276167). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "drop_percentage": 98.09084411533438
+ },
+ {
+ "rx_pps": 672601.1499390049,
+ "rx_pkts": 4822778,
+ "time_ms": 1646281614702,
+ "drop_pct": 261930884,
+ "total_tx_pps": 26675366,
+ "tx_pps": 37202380,
+ "tx_pkts": 266753662,
+ "warning": "WARNING: There is a significant difference between requested TX rate (37202380) and actual TX rate (26675366). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "drop_percentage": 98.19204806268039
+ },
+ {
+ "rx_pps": 504874.7734901166,
+ "rx_pkts": 5017597,
+ "time_ms": 1646281627207,
+ "drop_pct": 179846611,
+ "total_tx_pps": 18486420,
+ "tx_pps": 18601190,
+ "tx_pkts": 184864208,
+ "drop_percentage": 97.28579314823344
+ },
+ {
+ "rx_pps": 526090.9624989077,
+ "rx_pkts": 5239077,
+ "time_ms": 1646281639732,
+ "drop_pct": 87380891,
+ "total_tx_pps": 9261996,
+ "tx_pps": 9300594,
+ "tx_pkts": 92619968,
+ "drop_percentage": 94.34346921821437
+ },
+ {
+ "rx_pps": 338831.07121923624,
+ "rx_pkts": 3367405,
+ "time_ms": 1646281652234,
+ "drop_pct": 42848634,
+ "total_tx_pps": 4621603,
+ "tx_pps": 4650296,
+ "tx_pkts": 46216039,
+ "drop_percentage": 92.71377410772914
+ },
+ {
+ "rx_pps": 187871.99985494502,
+ "rx_pkts": 1867166,
+ "time_ms": 1646281664732,
+ "drop_pct": 21241319,
+ "total_tx_pps": 2310848,
+ "tx_pps": 2325148,
+ "tx_pkts": 23108485,
+ "drop_percentage": 91.9199982171051
+ },
+ {
+ "rx_pps": 291240.3958426355,
+ "rx_pkts": 2894493,
+ "time_ms": 1646281677251,
+ "drop_pct": 8659750,
+ "total_tx_pps": 1155424,
+ "tx_pps": 1162574,
+ "tx_pkts": 11554243,
+ "drop_percentage": 74.94865738932442
+ },
+ {
+ "rx_pps": 534014.7450349748,
+ "rx_pkts": 5307629,
+ "time_ms": 1646281689761,
+ "drop_pct": 469834,
+ "total_tx_pps": 577746,
+ "tx_pps": 581286,
+ "tx_pkts": 5777463,
+ "drop_percentage": 8.132185355405998
+ },
+ {
+ "rx_pps": 290481.83102404187,
+ "rx_pkts": 2887245,
+ "time_ms": 1646281702271,
+ "drop_pct": 1592,
+ "total_tx_pps": 288883,
+ "tx_pps": 290642,
+ "tx_pkts": 2888837,
+ "drop_percentage": 0.05510868214440621
+ },
+ {
+ "rx_pps": 145320.0,
+ "rx_pkts": 1444265,
+ "time_ms": 1646281714791,
+ "drop_pct": 0,
+ "total_tx_pps": 144426,
+ "tx_pps": 145320,
+ "tx_pkts": 1444265,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 217982.0,
+ "rx_pkts": 2166416,
+ "time_ms": 1646281727292,
+ "drop_pct": 0,
+ "total_tx_pps": 216641,
+ "tx_pps": 217982,
+ "tx_pkts": 2166416,
+ "ndr_pps": 108991,
+ "drop_percentage": 0.0
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 128,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "7dca1c234a4544fa8b4600aeca81a251"
+ },
+ "synthesis": {
+ "avg_delay_usec": 345.5001269377627,
+ "total_tx_rate": 216641
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.intensive",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_128-fc_128-rate_ndr-2.json",
+ "frame_sizes": [
+ "128"
+ ],
+ "rate": "ndr",
+ "flow_count": "128",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc6_intensive"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-03 04:38:28",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "471b575695a34aeb896904338ee56c9e",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "128"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 128,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_128-fc_128-rate_ndr-2.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "128"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2504,
+ 2515
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc6_intensive",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.intensive",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_128-fc_128-rate_ndr-2.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "128": {
+ "ndr": {
+ "load_percent_per_direction": 0.48828125,
+ "timestamp_sec": 1646282448.6252708,
+ "stats": {
+ "total_tx_rate": 204950,
+ "overall": {
+ "rx_pkts": 2049506,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 4734,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 2049506,
+ "avg_delay_usec": 402.9975642911023,
+ "min_delay_usec": 50,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1024701,
+ "min_delay_usec": 50,
+ "drop_pct": 0,
+ "max_delay_usec": 2923,
+ "tx_pkts": 1024805,
+ "avg_delay_usec": 451,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 1024805,
+ "min_delay_usec": 70,
+ "drop_pct": 0,
+ "max_delay_usec": 4734,
+ "tx_pkts": 1024701,
+ "avg_delay_usec": 355,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 242660800.0,
+ "theoretical_tx_rate_pps": 42229729.72972973
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 0.9765625,
+ "duration_sec": 10.0,
+ "l2frame_size": "128",
+ "rate_pps": 206198,
+ "rate_bps": 244140624.0,
+ "time_taken_sec": 137.57624626159668
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 611597.2644258632,
+ "rx_pkts": 3719633,
+ "time_ms": 1646282323560,
+ "drop_pct": 253114560,
+ "total_tx_pps": 25683419,
+ "tx_pps": 42229728,
+ "tx_pkts": 256834193,
+ "warning": "WARNING: There is a significant difference between requested TX rate (42229728) and actual TX rate (25683419). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "drop_percentage": 98.55173761851873
+ },
+ {
+ "rx_pps": 386189.1189369173,
+ "rx_pkts": 3838141,
+ "time_ms": 1646282336056,
+ "drop_pct": 206011959,
+ "total_tx_pps": 20985010,
+ "tx_pps": 21114864,
+ "tx_pkts": 209850100,
+ "drop_percentage": 98.17100825779926
+ },
+ {
+ "rx_pps": 535360.03343522,
+ "rx_pkts": 5320676,
+ "time_ms": 1646282348558,
+ "drop_pct": 99604368,
+ "total_tx_pps": 10492504,
+ "tx_pps": 10557432,
+ "tx_pkts": 104925044,
+ "drop_percentage": 94.92906955559629
+ },
+ {
+ "rx_pps": 475850.8644810261,
+ "rx_pkts": 4729244,
+ "time_ms": 1646282361060,
+ "drop_pct": 47733277,
+ "total_tx_pps": 5246252,
+ "tx_pps": 5278716,
+ "tx_pkts": 52462521,
+ "drop_percentage": 90.98548085403674
+ },
+ {
+ "rx_pps": 481740.3899527563,
+ "rx_pkts": 4788259,
+ "time_ms": 1646282373570,
+ "drop_pct": 21445642,
+ "total_tx_pps": 2623390,
+ "tx_pps": 2639358,
+ "tx_pkts": 26233901,
+ "drop_percentage": 81.74781935786065
+ },
+ {
+ "rx_pps": 162404.72992262442,
+ "rx_pkts": 1614222,
+ "time_ms": 1646282386070,
+ "drop_pct": 11502719,
+ "total_tx_pps": 1311694,
+ "tx_pps": 1319678,
+ "tx_pkts": 13116941,
+ "drop_percentage": 87.69360935602288
+ },
+ {
+ "rx_pps": 528791.9306016571,
+ "rx_pkts": 5256987,
+ "time_ms": 1646282398572,
+ "drop_pct": 1302795,
+ "total_tx_pps": 655978,
+ "tx_pps": 659838,
+ "tx_pkts": 6559782,
+ "drop_percentage": 19.86033987105059
+ },
+ {
+ "rx_pps": 329883.78962649574,
+ "rx_pkts": 3278552,
+ "time_ms": 1646282411079,
+ "drop_pct": 340,
+ "total_tx_pps": 327889,
+ "tx_pps": 329918,
+ "tx_pkts": 3278892,
+ "drop_percentage": 0.010369356477736992
+ },
+ {
+ "rx_pps": 164958.0,
+ "rx_pkts": 1639603,
+ "time_ms": 1646282423587,
+ "drop_pct": 0,
+ "total_tx_pps": 163960,
+ "tx_pps": 164958,
+ "tx_pkts": 1639603,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 247433.07018056748,
+ "rx_pkts": 2459364,
+ "time_ms": 1646282436086,
+ "drop_pct": 49,
+ "total_tx_pps": 245941,
+ "tx_pps": 247438,
+ "tx_pkts": 2459413,
+ "drop_percentage": 0.001992345327929876
+ },
+ {
+ "rx_pps": 206198.0,
+ "rx_pkts": 2049506,
+ "time_ms": 1646282448624,
+ "drop_pct": 0,
+ "total_tx_pps": 204950,
+ "tx_pps": 206198,
+ "tx_pkts": 2049506,
+ "ndr_pps": 103099,
+ "drop_percentage": 0.0
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 128,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "471b575695a34aeb896904338ee56c9e"
+ },
+ "synthesis": {
+ "avg_delay_usec": 402.9975642911023,
+ "total_tx_rate": 204950
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.intensive",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_256-fc_128-rate_ndr-2.json",
+ "frame_sizes": [
+ "256"
+ ],
+ "rate": "ndr",
+ "flow_count": "128",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc6_intensive"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-03 04:43:16",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "d3d2bdbb46a848a6bd1d9fceccf3e984",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "256"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 128,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_256-fc_128-rate_ndr-1.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "256"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2504,
+ 2515
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc6_intensive",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.intensive",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_256-fc_128-rate_ndr-1.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "256": {
+ "ndr": {
+ "load_percent_per_direction": 1.171875,
+ "timestamp_sec": 1646282737.0682218,
+ "stats": {
+ "total_tx_rate": 263738,
+ "overall": {
+ "rx_pkts": 2637364,
+ "drop_percentage": 0.0006445788454531218,
+ "drop_pct": 17,
+ "max_delay_usec": 3483,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 2637381,
+ "avg_delay_usec": 391.5000284374853,
+ "min_delay_usec": 43,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1318607,
+ "min_delay_usec": 51,
+ "drop_pct": 17,
+ "max_delay_usec": 3483,
+ "tx_pkts": 1318757,
+ "avg_delay_usec": 391,
+ "drop_percentage": 0.0012890926834890734
+ },
+ "0": {
+ "rx_pkts": 1318757,
+ "min_delay_usec": 43,
+ "drop_pct": 0,
+ "max_delay_usec": 2612,
+ "tx_pkts": 1318624,
+ "avg_delay_usec": 392,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 582333504.0,
+ "theoretical_tx_rate_pps": 22644927.536231883
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 2.34375,
+ "duration_sec": 10.0,
+ "l2frame_size": "256",
+ "rate_pps": 265370,
+ "rate_bps": 585937500.0,
+ "time_taken_sec": 137.64893245697021
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 522344.1460825948,
+ "rx_pkts": 4754897,
+ "time_ms": 1646282611907,
+ "drop_pct": 201381788,
+ "total_tx_pps": 20613668,
+ "tx_pps": 22644926,
+ "tx_pkts": 206136685,
+ "drop_percentage": 97.69332809441464
+ },
+ {
+ "rx_pps": 491622.4395108708,
+ "rx_pkts": 4886235,
+ "time_ms": 1646282624425,
+ "drop_pct": 107647705,
+ "total_tx_pps": 11253394,
+ "tx_pps": 11322462,
+ "tx_pkts": 112533940,
+ "drop_percentage": 95.6579899361917
+ },
+ {
+ "rx_pps": 470777.2330404413,
+ "rx_pkts": 4678820,
+ "time_ms": 1646282636925,
+ "drop_pct": 51585320,
+ "total_tx_pps": 5626414,
+ "tx_pps": 5661230,
+ "tx_pkts": 56264140,
+ "drop_percentage": 91.68418818807147
+ },
+ {
+ "rx_pps": 414425.7781120188,
+ "rx_pkts": 4118771,
+ "time_ms": 1646282649423,
+ "drop_pct": 24013289,
+ "total_tx_pps": 2813206,
+ "tx_pps": 2830614,
+ "tx_pkts": 28132060,
+ "drop_percentage": 85.3591560660684
+ },
+ {
+ "rx_pps": 236622.81767304175,
+ "rx_pkts": 2351913,
+ "time_ms": 1646282661925,
+ "drop_pct": 11715524,
+ "total_tx_pps": 1406743,
+ "tx_pps": 1415306,
+ "tx_pkts": 14067437,
+ "drop_percentage": 83.28115491116114
+ },
+ {
+ "rx_pps": 357701.18149108754,
+ "rx_pkts": 3555014,
+ "time_ms": 1646282674452,
+ "drop_pct": 3477987,
+ "total_tx_pps": 703300,
+ "tx_pps": 707652,
+ "tx_pkts": 7033001,
+ "drop_percentage": 49.45238881666589
+ },
+ {
+ "rx_pps": 353648.52806887566,
+ "rx_pkts": 3521103,
+ "time_ms": 1646282687041,
+ "drop_pct": 1767,
+ "total_tx_pps": 352287,
+ "tx_pps": 353826,
+ "tx_pkts": 3522870,
+ "drop_percentage": 0.05015796779330489
+ },
+ {
+ "rx_pps": 176912.0,
+ "rx_pkts": 1758241,
+ "time_ms": 1646282699539,
+ "drop_pct": 0,
+ "total_tx_pps": 175824,
+ "tx_pps": 176912,
+ "tx_pkts": 1758241,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 265368.28948111786,
+ "rx_pkts": 2637364,
+ "time_ms": 1646282712038,
+ "drop_pct": 17,
+ "total_tx_pps": 263738,
+ "tx_pps": 265370,
+ "tx_pkts": 2637381,
+ "drop_percentage": 0.0006445788454531218
+ },
+ {
+ "rx_pps": 309489.6445784601,
+ "rx_pkts": 3076176,
+ "time_ms": 1646282724538,
+ "drop_pct": 1077,
+ "total_tx_pps": 307725,
+ "tx_pps": 309598,
+ "tx_pkts": 3077253,
+ "drop_percentage": 0.03499874725932512
+ },
+ {
+ "rx_pps": 287373.73295271414,
+ "rx_pkts": 2856353,
+ "time_ms": 1646282737067,
+ "drop_pct": 1096,
+ "total_tx_pps": 285744,
+ "tx_pps": 287484,
+ "tx_pkts": 2857449,
+ "ndr_pps": 132685,
+ "drop_percentage": 0.03835589016636867
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 128,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "d3d2bdbb46a848a6bd1d9fceccf3e984"
+ },
+ "synthesis": {
+ "avg_delay_usec": 391.5000284374853,
+ "total_tx_rate": 263738
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.intensive",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_512-fc_128-rate_ndr-2.json",
+ "frame_sizes": [
+ "512"
+ ],
+ "rate": "ndr",
+ "flow_count": "128",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc6_intensive"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-03 04:48:05",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "3003c1cc691e42569317eef8cabf49f4",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "512"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 128,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_512-fc_128-rate_ndr-0.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "512"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2504,
+ 2515
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc6_intensive",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.intensive",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_512-fc_128-rate_ndr-0.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "512": {
+ "ndr": {
+ "load_percent_per_direction": 1.85546875,
+ "timestamp_sec": 1646283026.276379,
+ "stats": {
+ "total_tx_rate": 216663,
+ "overall": {
+ "rx_pkts": 2166633,
+ "drop_percentage": 9.230904143983643e-05,
+ "drop_pct": 2,
+ "max_delay_usec": 3778,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 2166635,
+ "avg_delay_usec": 293.49982068952147,
+ "min_delay_usec": 38,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1083261,
+ "min_delay_usec": 38,
+ "drop_pct": 2,
+ "max_delay_usec": 2864,
+ "tx_pkts": 1083372,
+ "avg_delay_usec": 297,
+ "drop_percentage": 0.00018460879550145288
+ },
+ "0": {
+ "rx_pkts": 1083372,
+ "min_delay_usec": 43,
+ "drop_pct": 0,
+ "max_delay_usec": 3778,
+ "tx_pkts": 1083263,
+ "avg_delay_usec": 290,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 922117728.0,
+ "theoretical_tx_rate_pps": 11748120.30075188
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 3.7109375,
+ "duration_sec": 10.0,
+ "l2frame_size": "512",
+ "rate_pps": 217982,
+ "rate_bps": 927734374.0,
+ "time_taken_sec": 137.69713401794434
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 455331.51681267726,
+ "rx_pkts": 4337032,
+ "time_ms": 1646282901128,
+ "drop_pct": 107563793,
+ "total_tx_pps": 11190082,
+ "tx_pps": 11748120,
+ "tx_pkts": 111900825,
+ "drop_percentage": 96.12421802967047
+ },
+ {
+ "rx_pps": 440270.9763230637,
+ "rx_pkts": 4375633,
+ "time_ms": 1646282913629,
+ "drop_pct": 54003711,
+ "total_tx_pps": 5837934,
+ "tx_pps": 5874060,
+ "tx_pkts": 58379344,
+ "drop_percentage": 92.50482670719973
+ },
+ {
+ "rx_pps": 515017.8171997763,
+ "rx_pkts": 5119020,
+ "time_ms": 1646282926174,
+ "drop_pct": 24073592,
+ "total_tx_pps": 2919261,
+ "tx_pps": 2937030,
+ "tx_pkts": 29192612,
+ "drop_percentage": 82.46467291107764
+ },
+ {
+ "rx_pps": 328003.16112234007,
+ "rx_pkts": 3259860,
+ "time_ms": 1646282938675,
+ "drop_pct": 11334969,
+ "total_tx_pps": 1459482,
+ "tx_pps": 1468514,
+ "tx_pkts": 14594829,
+ "drop_percentage": 77.66428095868748
+ },
+ {
+ "rx_pps": 517398.77960233815,
+ "rx_pkts": 5142169,
+ "time_ms": 1646282951182,
+ "drop_pct": 2155236,
+ "total_tx_pps": 729740,
+ "tx_pps": 734256,
+ "tx_pkts": 7297405,
+ "drop_percentage": 29.534279651465145
+ },
+ {
+ "rx_pps": 366808.26589116355,
+ "rx_pkts": 3645894,
+ "time_ms": 1646282963699,
+ "drop_pct": 3178,
+ "total_tx_pps": 364907,
+ "tx_pps": 367128,
+ "tx_pkts": 3649072,
+ "drop_percentage": 0.08709063564654246
+ },
+ {
+ "rx_pps": 183564.0,
+ "rx_pkts": 1825087,
+ "time_ms": 1646282976228,
+ "drop_pct": 0,
+ "total_tx_pps": 182508,
+ "tx_pps": 183564,
+ "tx_pkts": 1825087,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 275044.7500159553,
+ "rx_pkts": 2739035,
+ "time_ms": 1646282988754,
+ "drop_pct": 3000,
+ "total_tx_pps": 274203,
+ "tx_pps": 275346,
+ "tx_pkts": 2742035,
+ "drop_percentage": 0.10940779384654098
+ },
+ {
+ "rx_pps": 229445.14599323669,
+ "rx_pkts": 2280456,
+ "time_ms": 1646283001254,
+ "drop_pct": 88,
+ "total_tx_pps": 228054,
+ "tx_pps": 229454,
+ "tx_pkts": 2280544,
+ "drop_percentage": 0.0038587284437397395
+ },
+ {
+ "rx_pps": 206508.0,
+ "rx_pkts": 2052588,
+ "time_ms": 1646283013764,
+ "drop_pct": 0,
+ "total_tx_pps": 205258,
+ "tx_pps": 206508,
+ "tx_pkts": 2052588,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 217981.7987829053,
+ "rx_pkts": 2166633,
+ "time_ms": 1646283026275,
+ "drop_pct": 2,
+ "total_tx_pps": 216663,
+ "tx_pps": 217982,
+ "tx_pkts": 2166635,
+ "ndr_pps": 108991,
+ "drop_percentage": 9.230904143983643e-05
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 128,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "3003c1cc691e42569317eef8cabf49f4"
+ },
+ "synthesis": {
+ "avg_delay_usec": 293.49982068952147,
+ "total_tx_rate": 216663
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.intensive",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_768-fc_128-rate_ndr-2.json",
+ "frame_sizes": [
+ "768"
+ ],
+ "rate": "ndr",
+ "flow_count": "128",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc6_intensive"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-03 05:00:08",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "65d6a678b0ba42a49b38c9efd82efd93",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "768"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 128,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_768-fc_128-rate_ndr-2.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "768"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2504,
+ 2515
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc6_intensive",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.intensive",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_768-fc_128-rate_ndr-2.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "768": {
+ "ndr": {
+ "load_percent_per_direction": 3.3203125,
+ "timestamp_sec": 1646283748.6846843,
+ "stats": {
+ "total_tx_rate": 261728,
+ "overall": {
+ "rx_pkts": 2617285,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 700,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 2617285,
+ "avg_delay_usec": 417.5000750778001,
+ "min_delay_usec": 47,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1308577,
+ "min_delay_usec": 57,
+ "drop_pct": 0,
+ "max_delay_usec": 658,
+ "tx_pkts": 1308708,
+ "avg_delay_usec": 416,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 1308708,
+ "min_delay_usec": 47,
+ "drop_pct": 0,
+ "max_delay_usec": 700,
+ "tx_pkts": 1308577,
+ "avg_delay_usec": 419,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 1649933312.0,
+ "theoretical_tx_rate_pps": 7931472.081218274
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 6.640625,
+ "duration_sec": 10.0,
+ "l2frame_size": "768",
+ "rate_pps": 263348,
+ "rate_bps": 1660156250.0,
+ "time_taken_sec": 137.7285816669464
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 575501.9363137981,
+ "rx_pkts": 5571778,
+ "time_ms": 1646283623454,
+ "drop_pct": 71217540,
+ "total_tx_pps": 7678931,
+ "tx_pps": 7931472,
+ "tx_pkts": 76789318,
+ "drop_percentage": 92.74407151265493
+ },
+ {
+ "rx_pps": 340865.59968071827,
+ "rx_pkts": 3387693,
+ "time_ms": 1646283635959,
+ "drop_pct": 36025777,
+ "total_tx_pps": 3941347,
+ "tx_pps": 3965736,
+ "tx_pkts": 39413470,
+ "drop_percentage": 91.40473295043547
+ },
+ {
+ "rx_pps": 249221.15639844484,
+ "rx_pkts": 2477134,
+ "time_ms": 1646283648464,
+ "drop_pct": 17231585,
+ "total_tx_pps": 1970871,
+ "tx_pps": 1982868,
+ "tx_pkts": 19708719,
+ "drop_percentage": 87.43127851180992
+ },
+ {
+ "rx_pps": 240158.13023928663,
+ "rx_pkts": 2391135,
+ "time_ms": 1646283661049,
+ "drop_pct": 7480080,
+ "total_tx_pps": 987121,
+ "tx_pps": 991434,
+ "tx_pkts": 9871215,
+ "drop_percentage": 75.7766901034979
+ },
+ {
+ "rx_pps": 459235.5137965551,
+ "rx_pkts": 4564574,
+ "time_ms": 1646283673551,
+ "drop_pct": 362598,
+ "total_tx_pps": 492717,
+ "tx_pps": 495716,
+ "tx_pkts": 4927172,
+ "drop_percentage": 7.359150441673235
+ },
+ {
+ "rx_pps": 247858.0,
+ "rx_pkts": 2463587,
+ "time_ms": 1646283686050,
+ "drop_pct": 0,
+ "total_tx_pps": 246358,
+ "tx_pps": 247858,
+ "tx_pkts": 2463587,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 371300.609486956,
+ "rx_pkts": 3691660,
+ "time_ms": 1646283698553,
+ "drop_pct": 4826,
+ "total_tx_pps": 369648,
+ "tx_pps": 371786,
+ "tx_pkts": 3696486,
+ "drop_percentage": 0.13055642575137577
+ },
+ {
+ "rx_pps": 309474.9002967386,
+ "rx_pkts": 3076028,
+ "time_ms": 1646283711054,
+ "drop_pct": 3450,
+ "total_tx_pps": 307947,
+ "tx_pps": 309822,
+ "tx_pkts": 3079478,
+ "drop_percentage": 0.11203197425018137
+ },
+ {
+ "rx_pps": 278245.10146550665,
+ "rx_pkts": 2765620,
+ "time_ms": 1646283723573,
+ "drop_pct": 5913,
+ "total_tx_pps": 277153,
+ "tx_pps": 278840,
+ "tx_pkts": 2771533,
+ "drop_percentage": 0.21334763107637542
+ },
+ {
+ "rx_pps": 263348.0,
+ "rx_pkts": 2617285,
+ "time_ms": 1646283736118,
+ "drop_pct": 0,
+ "total_tx_pps": 261728,
+ "tx_pps": 263348,
+ "tx_pkts": 2617285,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 271017.63418923074,
+ "rx_pkts": 2693645,
+ "time_ms": 1646283748683,
+ "drop_pct": 759,
+ "total_tx_pps": 269440,
+ "tx_pps": 271094,
+ "tx_pkts": 2694404,
+ "ndr_pps": 131674,
+ "drop_percentage": 0.028169494997780584
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 128,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "65d6a678b0ba42a49b38c9efd82efd93"
+ },
+ "synthesis": {
+ "avg_delay_usec": 417.5000750778001,
+ "total_tx_rate": 261728
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.intensive",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1024-fc_128-rate_ndr-2.json",
+ "frame_sizes": [
+ "1024"
+ ],
+ "rate": "ndr",
+ "flow_count": "128",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc6_intensive"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-03 05:04:57",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "f51a51cc7fba4903b86a862ccaa87b3f",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "1024"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 128,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1024-fc_128-rate_ndr-1.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "1024"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2504,
+ 2515
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc6_intensive",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.intensive",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1024-fc_128-rate_ndr-1.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "1024": {
+ "ndr": {
+ "load_percent_per_direction": 4.00390625,
+ "timestamp_sec": 1646284037.5527284,
+ "stats": {
+ "total_tx_rate": 238246,
+ "overall": {
+ "rx_pkts": 2382462,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 2280,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 2382462,
+ "avg_delay_usec": 422.00110809742193,
+ "min_delay_usec": 36,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1191171,
+ "min_delay_usec": 36,
+ "drop_pct": 0,
+ "max_delay_usec": 655,
+ "tx_pkts": 1191291,
+ "avg_delay_usec": 400,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 1191291,
+ "min_delay_usec": 37,
+ "drop_pct": 0,
+ "max_delay_usec": 2280,
+ "tx_pkts": 1191171,
+ "avg_delay_usec": 444,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 1989830592.0,
+ "theoretical_tx_rate_pps": 5986590.038314176
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 8.0078125,
+ "duration_sec": 10.0,
+ "l2frame_size": "1024",
+ "rate_pps": 239696,
+ "rate_bps": 2001953124.0,
+ "time_taken_sec": 137.72533512115479
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 385513.1486587311,
+ "rx_pkts": 3764226,
+ "time_ms": 1646283912326,
+ "drop_pct": 54690013,
+ "total_tx_pps": 5845423,
+ "tx_pps": 5986590,
+ "tx_pkts": 58454239,
+ "drop_percentage": 93.56038832359104
+ },
+ {
+ "rx_pps": 398306.9198628332,
+ "rx_pkts": 3958773,
+ "time_ms": 1646283924836,
+ "drop_pct": 25791580,
+ "total_tx_pps": 2975035,
+ "tx_pps": 2993294,
+ "tx_pkts": 29750353,
+ "drop_percentage": 86.69335789057696
+ },
+ {
+ "rx_pps": 175559.30090151777,
+ "rx_pkts": 1745323,
+ "time_ms": 1646283937398,
+ "drop_pct": 13133585,
+ "total_tx_pps": 1487890,
+ "tx_pps": 1496646,
+ "tx_pkts": 14878908,
+ "drop_percentage": 88.26981791943334
+ },
+ {
+ "rx_pps": 444333.64431527094,
+ "rx_pkts": 4424898,
+ "time_ms": 1646283949915,
+ "drop_pct": 3027269,
+ "total_tx_pps": 745216,
+ "tx_pps": 748322,
+ "tx_pkts": 7452167,
+ "drop_percentage": 40.6226672053914
+ },
+ {
+ "rx_pps": 372829.4511323847,
+ "rx_pkts": 3705741,
+ "time_ms": 1646283962433,
+ "drop_pct": 13225,
+ "total_tx_pps": 371896,
+ "tx_pps": 374160,
+ "tx_pkts": 3718966,
+ "drop_percentage": 0.35560959686106297
+ },
+ {
+ "rx_pps": 187078.39026223953,
+ "rx_pkts": 1859467,
+ "time_ms": 1646283974959,
+ "drop_pct": 16,
+ "total_tx_pps": 185948,
+ "tx_pps": 187080,
+ "tx_pkts": 1859483,
+ "drop_percentage": 0.000860454223028659
+ },
+ {
+ "rx_pps": 280547.1520142218,
+ "rx_pkts": 2788219,
+ "time_ms": 1646283987466,
+ "drop_pct": 724,
+ "total_tx_pps": 278894,
+ "tx_pps": 280620,
+ "tx_pkts": 2788943,
+ "drop_percentage": 0.025959655683174595
+ },
+ {
+ "rx_pps": 233850.0,
+ "rx_pkts": 2324354,
+ "time_ms": 1646283999977,
+ "drop_pct": 0,
+ "total_tx_pps": 232435,
+ "tx_pps": 233850,
+ "tx_pkts": 2324354,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 257205.36675450407,
+ "rx_pkts": 2560866,
+ "time_ms": 1646284012517,
+ "drop_pct": 305,
+ "total_tx_pps": 256117,
+ "tx_pps": 257236,
+ "tx_pkts": 2561171,
+ "drop_percentage": 0.011908615238888774
+ },
+ {
+ "rx_pps": 245467.66146251332,
+ "rx_pkts": 2440196,
+ "time_ms": 1646284025026,
+ "drop_pct": 739,
+ "total_tx_pps": 244093,
+ "tx_pps": 245542,
+ "tx_pkts": 2440935,
+ "drop_percentage": 0.030275283856391097
+ },
+ {
+ "rx_pps": 239696.0,
+ "rx_pkts": 2382462,
+ "time_ms": 1646284037551,
+ "drop_pct": 0,
+ "total_tx_pps": 238246,
+ "tx_pps": 239696,
+ "tx_pkts": 2382462,
+ "ndr_pps": 119848,
+ "drop_percentage": 0.0
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 128,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "f51a51cc7fba4903b86a862ccaa87b3f"
+ },
+ "synthesis": {
+ "avg_delay_usec": 422.00110809742193,
+ "total_tx_rate": 238246
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.intensive",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1280-fc_128-rate_ndr-2.json",
+ "frame_sizes": [
+ "1280"
+ ],
+ "rate": "ndr",
+ "flow_count": "128",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc6_intensive"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-03 05:12:10",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "80d26043cfdb45c3ae62d6de43f557e6",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "1280"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 128,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1280-fc_128-rate_ndr-1.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "1280"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2504,
+ 2515
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc6_intensive",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.intensive",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1280-fc_128-rate_ndr-1.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "1280": {
+ "ndr": {
+ "load_percent_per_direction": 4.39453125,
+ "timestamp_sec": 1646284470.8886955,
+ "stats": {
+ "total_tx_rate": 209995,
+ "overall": {
+ "rx_pkts": 2099959,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 7375,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 2099959,
+ "avg_delay_usec": 417.999049981452,
+ "min_delay_usec": 30,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1049927,
+ "min_delay_usec": 30,
+ "drop_pct": 0,
+ "max_delay_usec": 3319,
+ "tx_pkts": 1050032,
+ "avg_delay_usec": 437,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 1050032,
+ "min_delay_usec": 40,
+ "drop_pct": 0,
+ "max_delay_usec": 7375,
+ "tx_pkts": 1049927,
+ "avg_delay_usec": 399,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 2183948000.0,
+ "theoretical_tx_rate_pps": 4807692.307692308
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 8.7890625,
+ "duration_sec": 10.0,
+ "l2frame_size": "1280",
+ "rate_pps": 211274,
+ "rate_bps": 2197265624.0,
+ "time_taken_sec": 137.58449530601501
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 445313.368302234,
+ "rx_pkts": 4370570,
+ "time_ms": 1646284345792,
+ "drop_pct": 42814976,
+ "total_tx_pps": 4718554,
+ "tx_pps": 4807692,
+ "tx_pkts": 47185546,
+ "drop_percentage": 90.73748134651234
+ },
+ {
+ "rx_pps": 124940.5018865484,
+ "rx_pkts": 1242346,
+ "time_ms": 1646284358300,
+ "drop_pct": 22660299,
+ "total_tx_pps": 2390264,
+ "tx_pps": 2403846,
+ "tx_pkts": 23902645,
+ "drop_percentage": 94.80247478887797
+ },
+ {
+ "rx_pps": 191703.051128334,
+ "rx_pkts": 1905433,
+ "time_ms": 1646284370806,
+ "drop_pct": 10041074,
+ "total_tx_pps": 1194650,
+ "tx_pps": 1201922,
+ "tx_pkts": 11946507,
+ "drop_percentage": 84.05029185518411
+ },
+ {
+ "rx_pps": 456071.17274298525,
+ "rx_pkts": 4533121,
+ "time_ms": 1646284383305,
+ "drop_pct": 1440123,
+ "total_tx_pps": 597324,
+ "tx_pps": 600960,
+ "tx_pkts": 5973244,
+ "drop_percentage": 24.109562576047455
+ },
+ {
+ "rx_pps": 298776.8979556851,
+ "rx_pkts": 2969696,
+ "time_ms": 1646284395827,
+ "drop_pct": 16928,
+ "total_tx_pps": 298662,
+ "tx_pps": 300480,
+ "tx_pkts": 2986624,
+ "drop_percentage": 0.566793811340162
+ },
+ {
+ "rx_pps": 150240.0,
+ "rx_pkts": 1493238,
+ "time_ms": 1646284408345,
+ "drop_pct": 0,
+ "total_tx_pps": 149323,
+ "tx_pps": 150240,
+ "tx_pkts": 1493238,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 225283.22787322282,
+ "rx_pkts": 2238978,
+ "time_ms": 1646284420849,
+ "drop_pct": 763,
+ "total_tx_pps": 223974,
+ "tx_pps": 225360,
+ "tx_pkts": 2239741,
+ "drop_percentage": 0.034066438932001515
+ },
+ {
+ "rx_pps": 187800.0,
+ "rx_pkts": 1866452,
+ "time_ms": 1646284433379,
+ "drop_pct": 0,
+ "total_tx_pps": 186645,
+ "tx_pps": 187800,
+ "tx_pkts": 1866452,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 206580.0,
+ "rx_pkts": 2053097,
+ "time_ms": 1646284445878,
+ "drop_pct": 0,
+ "total_tx_pps": 205309,
+ "tx_pps": 206580,
+ "tx_pkts": 2053097,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 215836.3783602464,
+ "rx_pkts": 2145092,
+ "time_ms": 1646284458378,
+ "drop_pct": 1328,
+ "total_tx_pps": 214642,
+ "tx_pps": 215970,
+ "tx_pkts": 2146420,
+ "drop_percentage": 0.06187046337622646
+ },
+ {
+ "rx_pps": 211274.0,
+ "rx_pkts": 2099959,
+ "time_ms": 1646284470887,
+ "drop_pct": 0,
+ "total_tx_pps": 209995,
+ "tx_pps": 211274,
+ "tx_pkts": 2099959,
+ "ndr_pps": 105637,
+ "drop_percentage": 0.0
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 128,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "80d26043cfdb45c3ae62d6de43f557e6"
+ },
+ "synthesis": {
+ "avg_delay_usec": 417.999049981452,
+ "total_tx_rate": 209995
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.intensive",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1518-fc_128-rate_ndr-2.json",
+ "frame_sizes": [
+ "1518"
+ ],
+ "rate": "ndr",
+ "flow_count": "128",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc6_intensive"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-03 05:16:59",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "fab39ed6c612445784e1e24574be97e2",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "1518"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 128,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1518-fc_128-rate_ndr-0.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "1518"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2504,
+ 2515
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc6_intensive",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.intensive",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1518-fc_128-rate_ndr-0.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "1518": {
+ "ndr": {
+ "load_percent_per_direction": 6.25,
+ "timestamp_sec": 1646284759.8324285,
+ "stats": {
+ "total_tx_rate": 252445,
+ "overall": {
+ "rx_pkts": 2524456,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 13375,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 2524456,
+ "avg_delay_usec": 557.5041177188274,
+ "min_delay_usec": 43,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1262165,
+ "min_delay_usec": 43,
+ "drop_pct": 0,
+ "max_delay_usec": 657,
+ "tx_pkts": 1262291,
+ "avg_delay_usec": 475,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 1262291,
+ "min_delay_usec": 79,
+ "drop_pct": 0,
+ "max_delay_usec": 13375,
+ "tx_pkts": 1262165,
+ "avg_delay_usec": 640,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 3106083280.0,
+ "theoretical_tx_rate_pps": 4063719.1157347206
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 12.5,
+ "duration_sec": 10.0,
+ "l2frame_size": "1518",
+ "rate_pps": 253982,
+ "rate_bps": 3125000000.0,
+ "time_taken_sec": 137.6273422241211
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 348467.55522107193,
+ "rx_pkts": 3427071,
+ "time_ms": 1646284634724,
+ "drop_pct": 36538343,
+ "total_tx_pps": 3996541,
+ "tx_pps": 4063718,
+ "tx_pkts": 39965414,
+ "drop_percentage": 91.42490804674262
+ },
+ {
+ "rx_pps": 194182.29947632473,
+ "rx_pkts": 1929881,
+ "time_ms": 1646284647240,
+ "drop_pct": 18263742,
+ "total_tx_pps": 2019362,
+ "tx_pps": 2031858,
+ "tx_pkts": 20193623,
+ "drop_percentage": 90.44311662151958
+ },
+ {
+ "rx_pps": 179396.25923534992,
+ "rx_pkts": 1782930,
+ "time_ms": 1646284659752,
+ "drop_pct": 8313872,
+ "total_tx_pps": 1009680,
+ "tx_pps": 1015928,
+ "tx_pkts": 10096802,
+ "drop_percentage": 82.3416364904452
+ },
+ {
+ "rx_pps": 444172.416750406,
+ "rx_pkts": 4414410,
+ "time_ms": 1646284672259,
+ "drop_pct": 633993,
+ "total_tx_pps": 504840,
+ "tx_pps": 507964,
+ "tx_pkts": 5048403,
+ "drop_percentage": 12.5582882349131
+ },
+ {
+ "rx_pps": 253982.0,
+ "rx_pkts": 2524456,
+ "time_ms": 1646284684759,
+ "drop_pct": 0,
+ "total_tx_pps": 252445,
+ "tx_pps": 253982,
+ "tx_pkts": 2524456,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 380480.22499434196,
+ "rx_pkts": 3781785,
+ "time_ms": 1646284697283,
+ "drop_pct": 4888,
+ "total_tx_pps": 378667,
+ "tx_pps": 380972,
+ "tx_pkts": 3786673,
+ "drop_percentage": 0.12908429114423137
+ },
+ {
+ "rx_pps": 316051.2110285178,
+ "rx_pkts": 3141708,
+ "time_ms": 1646284709792,
+ "drop_pct": 14183,
+ "total_tx_pps": 315589,
+ "tx_pps": 317478,
+ "tx_pkts": 3155891,
+ "drop_percentage": 0.44941349368530153
+ },
+ {
+ "rx_pps": 285668.0250878956,
+ "rx_pkts": 2839399,
+ "time_ms": 1646284722300,
+ "drop_pct": 616,
+ "total_tx_pps": 284001,
+ "tx_pps": 285730,
+ "tx_pkts": 2840015,
+ "drop_percentage": 0.02169002628507244
+ },
+ {
+ "rx_pps": 269807.1017426643,
+ "rx_pkts": 2681614,
+ "time_ms": 1646284734800,
+ "drop_pct": 486,
+ "total_tx_pps": 268210,
+ "tx_pps": 269856,
+ "tx_pkts": 2682100,
+ "drop_percentage": 0.018120129749077216
+ },
+ {
+ "rx_pps": 261898.78374930617,
+ "rx_pkts": 2603144,
+ "time_ms": 1646284747309,
+ "drop_pct": 191,
+ "total_tx_pps": 260333,
+ "tx_pps": 261918,
+ "tx_pkts": 2603335,
+ "drop_percentage": 0.007336743062264364
+ },
+ {
+ "rx_pps": 257926.4552171562,
+ "rx_pkts": 2563404,
+ "time_ms": 1646284759831,
+ "drop_pct": 234,
+ "total_tx_pps": 256363,
+ "tx_pps": 257950,
+ "tx_pkts": 2563638,
+ "ndr_pps": 126991,
+ "drop_percentage": 0.009127653748306118
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 128,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "fab39ed6c612445784e1e24574be97e2"
+ },
+ "synthesis": {
+ "avg_delay_usec": 557.5041177188274,
+ "total_tx_rate": 252445
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.intensive",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_IMIX-fc_128-rate_ndr-2.json",
+ "frame_sizes": [
+ "IMIX"
+ ],
+ "rate": "ndr",
+ "flow_count": "128",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc6_intensive"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-03 05:24:12",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "ceb21980b7a54cfca27c2be13acbe3fd",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "IMIX"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 128,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_IMIX-fc_128-rate_ndr-0.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "IMIX"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2504,
+ 2515
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc6_intensive",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.intensive",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_IMIX-fc_128-rate_ndr-0.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "IMIX": {
+ "ndr": {
+ "load_percent_per_direction": 1.171875,
+ "timestamp_sec": 1646285193.3781986,
+ "stats": {
+ "total_tx_rate": 190656,
+ "overall": {
+ "rx_pkts": 1906560,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 3445,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 1906560,
+ "avg_delay_usec": 366.4996223564955,
+ "min_delay_usec": 49,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 953232,
+ "min_delay_usec": 54,
+ "drop_pct": 0,
+ "max_delay_usec": 3445,
+ "tx_pkts": 953328,
+ "avg_delay_usec": 374,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 953328,
+ "min_delay_usec": 49,
+ "drop_pct": 0,
+ "max_delay_usec": 3400,
+ "tx_pkts": 953232,
+ "avg_delay_usec": 359,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 582390528.0,
+ "theoretical_tx_rate_pps": 16368398.079441292
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 2.34375,
+ "duration_sec": 10.0,
+ "l2frame_size": "IMIX",
+ "rate_pps": 191816,
+ "rate_bps": 585937500.0,
+ "time_taken_sec": 137.84817028045654
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 527518.6982376295,
+ "rx_pkts": 4594899,
+ "time_ms": 1646285068098,
+ "drop_pct": 137980399,
+ "total_tx_pps": 14257529,
+ "tx_pps": 16368398,
+ "tx_pkts": 142575298,
+ "warning": "WARNING: There is a significant difference between requested TX rate (16368398) and actual TX rate (14257529). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "drop_percentage": 96.77721241725898
+ },
+ {
+ "rx_pps": 649584.5882534897,
+ "rx_pkts": 6455897,
+ "time_ms": 1646285080678,
+ "drop_pct": 74882762,
+ "total_tx_pps": 8133865,
+ "tx_pps": 8184198,
+ "tx_pkts": 81338659,
+ "drop_percentage": 92.06294143600277
+ },
+ {
+ "rx_pps": 486023.50862599886,
+ "rx_pkts": 4830345,
+ "time_ms": 1646285093199,
+ "drop_pct": 35838974,
+ "total_tx_pps": 4066931,
+ "tx_pps": 4092098,
+ "tx_pkts": 40669319,
+ "drop_percentage": 88.12287710054845
+ },
+ {
+ "rx_pps": 487117.8462164386,
+ "rx_pkts": 4841709,
+ "time_ms": 1646285105721,
+ "drop_pct": 15494990,
+ "total_tx_pps": 2033669,
+ "tx_pps": 2046048,
+ "tx_pkts": 20336699,
+ "drop_percentage": 76.19225716031889
+ },
+ {
+ "rx_pps": 365059.10021687107,
+ "rx_pkts": 3628142,
+ "time_ms": 1646285118236,
+ "drop_pct": 6539188,
+ "total_tx_pps": 1016733,
+ "tx_pps": 1023024,
+ "tx_pkts": 10167330,
+ "drop_percentage": 64.31568563231448
+ },
+ {
+ "rx_pps": 470718.585949703,
+ "rx_pkts": 4678475,
+ "time_ms": 1646285130816,
+ "drop_pct": 405446,
+ "total_tx_pps": 508392,
+ "tx_pps": 511512,
+ "tx_pkts": 5083921,
+ "drop_percentage": 7.975064915446168
+ },
+ {
+ "rx_pps": 255742.51844840997,
+ "rx_pkts": 2541955,
+ "time_ms": 1646285143320,
+ "drop_pct": 134,
+ "total_tx_pps": 254208,
+ "tx_pps": 255756,
+ "tx_pkts": 2542089,
+ "drop_percentage": 0.0052712552550284435
+ },
+ {
+ "rx_pps": 127878.0,
+ "rx_pkts": 1271047,
+ "time_ms": 1646285155820,
+ "drop_pct": 0,
+ "total_tx_pps": 127104,
+ "tx_pps": 127878,
+ "tx_pkts": 1271047,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 191816.0,
+ "rx_pkts": 1906560,
+ "time_ms": 1646285168332,
+ "drop_pct": 0,
+ "total_tx_pps": 190656,
+ "tx_pps": 191816,
+ "tx_pkts": 1906560,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 223586.05076246973,
+ "rx_pkts": 2225246,
+ "time_ms": 1646285180872,
+ "drop_pct": 1990,
+ "total_tx_pps": 222723,
+ "tx_pps": 223786,
+ "tx_pkts": 2227236,
+ "drop_percentage": 0.08934841211259158
+ },
+ {
+ "rx_pps": 207747.38173291675,
+ "rx_pkts": 2064908,
+ "time_ms": 1646285193377,
+ "drop_pct": 523,
+ "total_tx_pps": 206543,
+ "tx_pps": 207800,
+ "tx_pkts": 2065431,
+ "ndr_pps": 95908,
+ "drop_percentage": 0.02532159147412816
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 128,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "ceb21980b7a54cfca27c2be13acbe3fd"
+ },
+ "synthesis": {
+ "avg_delay_usec": 366.4996223564955,
+ "total_tx_rate": 190656
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.intensive",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_9000-fc_128-rate_ndr-2.json",
+ "frame_sizes": [
+ "9000"
+ ],
+ "rate": "ndr",
+ "flow_count": "128",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc6_intensive"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-03 05:31:26",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "7d83b94d43e942238d6c50de662d6dcf",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "9000"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 128,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_9000-fc_128-rate_ndr-0.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "9000"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2504,
+ 2515
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc6_intensive",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.intensive",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_9000-fc_128-rate_ndr-0.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "9000": {
+ "ndr": {
+ "load_percent_per_direction": 22.65625,
+ "timestamp_sec": 1646285626.5736058,
+ "stats": {
+ "total_tx_rate": 156036,
+ "overall": {
+ "rx_pkts": 1560365,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 5728,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 1560365,
+ "avg_delay_usec": 587.9997974832811,
+ "min_delay_usec": 58,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 780143,
+ "min_delay_usec": 58,
+ "drop_pct": 0,
+ "max_delay_usec": 1773,
+ "tx_pkts": 780222,
+ "avg_delay_usec": 592,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 780222,
+ "min_delay_usec": 59,
+ "drop_pct": 0,
+ "max_delay_usec": 5728,
+ "tx_pkts": 780143,
+ "avg_delay_usec": 584,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 11259557760.0,
+ "theoretical_tx_rate_pps": 692904.6563192905
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 45.3125,
+ "duration_sec": 10.0,
+ "l2frame_size": "9000",
+ "rate_pps": 156986,
+ "rate_bps": 11328125000.0,
+ "time_taken_sec": 137.71946001052856
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 81808.84100646983,
+ "rx_pkts": 816086,
+ "time_ms": 1646285501423,
+ "drop_pct": 6095994,
+ "total_tx_pps": 691208,
+ "tx_pps": 692904,
+ "tx_pkts": 6912080,
+ "drop_percentage": 88.19333688267497
+ },
+ {
+ "rx_pps": 174051.7277974219,
+ "rx_pkts": 1729814,
+ "time_ms": 1646285513938,
+ "drop_pct": 1713401,
+ "total_tx_pps": 344321,
+ "tx_pps": 346452,
+ "tx_pkts": 3443215,
+ "drop_percentage": 49.761661702798115
+ },
+ {
+ "rx_pps": 173173.57764485295,
+ "rx_pkts": 1721087,
+ "time_ms": 1646285526441,
+ "drop_pct": 521,
+ "total_tx_pps": 172160,
+ "tx_pps": 173226,
+ "tx_pkts": 1721608,
+ "drop_percentage": 0.030262405843839015
+ },
+ {
+ "rx_pps": 86612.0,
+ "rx_pkts": 860882,
+ "time_ms": 1646285539000,
+ "drop_pct": 0,
+ "total_tx_pps": 86088,
+ "tx_pps": 86612,
+ "tx_pkts": 860882,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 129918.0,
+ "rx_pkts": 1293789,
+ "time_ms": 1646285551538,
+ "drop_pct": 0,
+ "total_tx_pps": 129378,
+ "tx_pps": 129918,
+ "tx_pkts": 1293789,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 151572.0,
+ "rx_pkts": 1506400,
+ "time_ms": 1646285564049,
+ "drop_pct": 0,
+ "total_tx_pps": 150640,
+ "tx_pps": 151572,
+ "tx_pkts": 1506400,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 162238.83736784133,
+ "rx_pkts": 1612576,
+ "time_ms": 1646285576558,
+ "drop_pct": 1582,
+ "total_tx_pps": 161415,
+ "tx_pps": 162398,
+ "tx_pkts": 1614158,
+ "drop_percentage": 0.09800775388778546
+ },
+ {
+ "rx_pps": 156986.0,
+ "rx_pkts": 1560365,
+ "time_ms": 1646285589058,
+ "drop_pct": 0,
+ "total_tx_pps": 156036,
+ "tx_pps": 156986,
+ "tx_pkts": 1560365,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 159630.32079097626,
+ "rx_pkts": 1586489,
+ "time_ms": 1646285601557,
+ "drop_pct": 613,
+ "total_tx_pps": 158710,
+ "tx_pps": 159692,
+ "tx_pkts": 1587102,
+ "drop_percentage": 0.03862385656372432
+ },
+ {
+ "rx_pps": 155353.5470980394,
+ "rx_pkts": 1543982,
+ "time_ms": 1646285614056,
+ "drop_pct": 29661,
+ "total_tx_pps": 157364,
+ "tx_pps": 158338,
+ "tx_pkts": 1573643,
+ "drop_percentage": 1.8848620684615252
+ },
+ {
+ "rx_pps": 157653.74926958897,
+ "rx_pkts": 1566844,
+ "time_ms": 1646285626572,
+ "drop_pct": 82,
+ "total_tx_pps": 156692,
+ "tx_pps": 157662,
+ "tx_pkts": 1566926,
+ "ndr_pps": 78493,
+ "drop_percentage": 0.005233176295498319
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 128,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "7d83b94d43e942238d6c50de662d6dcf"
+ },
+ "synthesis": {
+ "avg_delay_usec": 587.9997974832811,
+ "total_tx_rate": 156036
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.intensive",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_64-fc_10k-rate_ndr-2.json",
+ "frame_sizes": [
+ "64"
+ ],
+ "rate": "ndr",
+ "flow_count": "10k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc6_intensive"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-03 05:38:39",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "7bffd833c7684dd6ad3c6fb4392fd892",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "64"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 10000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_64-fc_10k-rate_ndr-0.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "64"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2504,
+ 2515
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc6_intensive",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.intensive",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_64-fc_10k-rate_ndr-0.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "64": {
+ "ndr": {
+ "load_percent_per_direction": 0.390625,
+ "timestamp_sec": 1646286062.320283,
+ "stats": {
+ "total_tx_rate": 289377,
+ "overall": {
+ "rx_pkts": 2893779,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 4256,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 2893779,
+ "avg_delay_usec": 430.4998222048055,
+ "min_delay_usec": 52,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1446816,
+ "min_delay_usec": 52,
+ "drop_pct": 0,
+ "max_delay_usec": 4256,
+ "tx_pkts": 1446963,
+ "avg_delay_usec": 434,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 1446963,
+ "min_delay_usec": 57,
+ "drop_pct": 0,
+ "max_delay_usec": 948,
+ "tx_pkts": 1446816,
+ "avg_delay_usec": 427,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 194461344.0,
+ "theoretical_tx_rate_pps": 74404761.90476191
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 0.78125,
+ "duration_sec": 10.0,
+ "l2frame_size": "64",
+ "rate_pps": 290642,
+ "rate_bps": 195312500.0,
+ "time_taken_sec": 137.67585062980652
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 1060675.9533262525,
+ "rx_pkts": 3801256,
+ "time_ms": 1646285937162,
+ "drop_pct": 262850910,
+ "total_tx_pps": 26665216,
+ "tx_pps": 74404760,
+ "tx_pkts": 266652166,
+ "warning": "WARNING: There is a significant difference between requested TX rate (74404760) and actual TX rate (26665216). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "drop_percentage": 98.57445148223547
+ },
+ {
+ "rx_pps": 549084.4052686733,
+ "rx_pkts": 3959911,
+ "time_ms": 1646285949709,
+ "drop_pct": 264337845,
+ "total_tx_pps": 26829775,
+ "tx_pps": 37202380,
+ "tx_pkts": 268297756,
+ "warning": "WARNING: There is a significant difference between requested TX rate (37202380) and actual TX rate (26829775). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "drop_percentage": 98.52406108085377
+ },
+ {
+ "rx_pps": 369990.33655168186,
+ "rx_pkts": 3683809,
+ "time_ms": 1646285962227,
+ "drop_pct": 181518950,
+ "total_tx_pps": 18520275,
+ "tx_pps": 18601190,
+ "tx_pkts": 185202759,
+ "drop_percentage": 98.01093189977802
+ },
+ {
+ "rx_pps": 384612.35211511684,
+ "rx_pkts": 3822471,
+ "time_ms": 1646285974730,
+ "drop_pct": 88611510,
+ "total_tx_pps": 9243398,
+ "tx_pps": 9300594,
+ "tx_pkts": 92433981,
+ "drop_percentage": 95.86464743956013
+ },
+ {
+ "rx_pps": 168933.23502156153,
+ "rx_pkts": 1678943,
+ "time_ms": 1646285987251,
+ "drop_pct": 44538025,
+ "total_tx_pps": 4621696,
+ "tx_pps": 4650296,
+ "tx_pkts": 46216968,
+ "drop_percentage": 96.36725844932104
+ },
+ {
+ "rx_pps": 159074.18157372237,
+ "rx_pkts": 1580959,
+ "time_ms": 1646285999771,
+ "drop_pct": 21527528,
+ "total_tx_pps": 2310848,
+ "tx_pps": 2325148,
+ "tx_pkts": 23108487,
+ "drop_percentage": 93.15853521695297
+ },
+ {
+ "rx_pps": 171386.32143951976,
+ "rx_pkts": 1703323,
+ "time_ms": 1646286012283,
+ "drop_pct": 9850919,
+ "total_tx_pps": 1155424,
+ "tx_pps": 1162574,
+ "tx_pkts": 11554242,
+ "drop_percentage": 85.25802904249366
+ },
+ {
+ "rx_pps": 512810.1541521316,
+ "rx_pkts": 5097079,
+ "time_ms": 1646286024781,
+ "drop_pct": 680616,
+ "total_tx_pps": 577769,
+ "tx_pps": 581286,
+ "tx_pkts": 5777695,
+ "drop_percentage": 11.780061079721238
+ },
+ {
+ "rx_pps": 290642.0,
+ "rx_pkts": 2893779,
+ "time_ms": 1646286037314,
+ "drop_pct": 0,
+ "total_tx_pps": 289377,
+ "tx_pps": 290642,
+ "tx_pkts": 2893779,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 417277.35359887895,
+ "rx_pkts": 4147530,
+ "time_ms": 1646286049813,
+ "drop_pct": 185736,
+ "total_tx_pps": 433326,
+ "tx_pps": 435964,
+ "tx_pkts": 4333266,
+ "drop_percentage": 4.28628198684318
+ },
+ {
+ "rx_pps": 363141.5007727034,
+ "rx_pkts": 3609085,
+ "time_ms": 1646286062319,
+ "drop_pct": 1615,
+ "total_tx_pps": 361070,
+ "tx_pps": 363304,
+ "tx_pkts": 3610700,
+ "ndr_pps": 145321,
+ "drop_percentage": 0.044728169053092195
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 10000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "7bffd833c7684dd6ad3c6fb4392fd892"
+ },
+ "synthesis": {
+ "avg_delay_usec": 430.4998222048055,
+ "total_tx_rate": 289377
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.intensive",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_128-fc_10k-rate_ndr-2.json",
+ "frame_sizes": [
+ "128"
+ ],
+ "rate": "ndr",
+ "flow_count": "10k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc6_intensive"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-03 05:45:59",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "fcb4e242cc2c4c36873e6f0361cb9a5f",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "128"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 10000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_128-fc_10k-rate_ndr-0.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "128"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2504,
+ 2515
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc6_intensive",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.intensive",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_128-fc_10k-rate_ndr-0.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "128": {
+ "ndr": {
+ "load_percent_per_direction": 0.78125,
+ "timestamp_sec": 1646286501.6585698,
+ "stats": {
+ "total_tx_rate": 328252,
+ "overall": {
+ "rx_pkts": 3282523,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 5743,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 3282523,
+ "avg_delay_usec": 504.00045239591617,
+ "min_delay_usec": 59,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1641179,
+ "min_delay_usec": 60,
+ "drop_pct": 0,
+ "max_delay_usec": 5743,
+ "tx_pkts": 1641344,
+ "avg_delay_usec": 495,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 1641344,
+ "min_delay_usec": 59,
+ "drop_pct": 0,
+ "max_delay_usec": 5416,
+ "tx_pkts": 1641179,
+ "avg_delay_usec": 513,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 388650368.0,
+ "theoretical_tx_rate_pps": 42229729.72972973
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 1.5625,
+ "duration_sec": 10.0,
+ "l2frame_size": "128",
+ "rate_pps": 329918,
+ "rate_bps": 390625000.0,
+ "time_taken_sec": 137.7171869277954
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 669022.1950312835,
+ "rx_pkts": 4088190,
+ "time_ms": 1646286376431,
+ "drop_pct": 253964761,
+ "total_tx_pps": 25805295,
+ "tx_pps": 42229728,
+ "tx_pkts": 258052951,
+ "warning": "WARNING: There is a significant difference between requested TX rate (42229728) and actual TX rate (25805295). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "drop_percentage": 98.41575537727526
+ },
+ {
+ "rx_pps": 399023.3302773898,
+ "rx_pkts": 3965614,
+ "time_ms": 1646286388930,
+ "drop_pct": 205880262,
+ "total_tx_pps": 20984587,
+ "tx_pps": 21114864,
+ "tx_pkts": 209845876,
+ "drop_percentage": 98.11022543040112
+ },
+ {
+ "rx_pps": 447142.9301377911,
+ "rx_pkts": 4443482,
+ "time_ms": 1646286401505,
+ "drop_pct": 100470978,
+ "total_tx_pps": 10491446,
+ "tx_pps": 10557432,
+ "tx_pkts": 104914460,
+ "drop_percentage": 95.7646619922554
+ },
+ {
+ "rx_pps": 346951.3718415911,
+ "rx_pkts": 3448177,
+ "time_ms": 1646286414004,
+ "drop_pct": 49014354,
+ "total_tx_pps": 5246253,
+ "tx_pps": 5278716,
+ "tx_pkts": 52462531,
+ "drop_percentage": 93.42735294261728
+ },
+ {
+ "rx_pps": 215866.7599879869,
+ "rx_pkts": 2145392,
+ "time_ms": 1646286426523,
+ "drop_pct": 24085870,
+ "total_tx_pps": 2623126,
+ "tx_pps": 2639358,
+ "tx_pkts": 26231262,
+ "drop_percentage": 91.82123986257314
+ },
+ {
+ "rx_pps": 149781.0398090949,
+ "rx_pkts": 1488599,
+ "time_ms": 1646286439020,
+ "drop_pct": 11627022,
+ "total_tx_pps": 1311562,
+ "tx_pps": 1319678,
+ "tx_pkts": 13115621,
+ "drop_percentage": 88.65018286210008
+ },
+ {
+ "rx_pps": 498086.9811686903,
+ "rx_pkts": 4950239,
+ "time_ms": 1646286451572,
+ "drop_pct": 1607563,
+ "total_tx_pps": 655780,
+ "tx_pps": 659838,
+ "tx_pkts": 6557802,
+ "drop_percentage": 24.51374713661681
+ },
+ {
+ "rx_pps": 329918.0,
+ "rx_pkts": 3282523,
+ "time_ms": 1646286464132,
+ "drop_pct": 0,
+ "total_tx_pps": 328252,
+ "tx_pps": 329918,
+ "tx_pkts": 3282523,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 478526.7821332745,
+ "rx_pkts": 4756319,
+ "time_ms": 1646286476632,
+ "drop_pct": 162523,
+ "total_tx_pps": 491884,
+ "tx_pps": 494878,
+ "tx_pkts": 4918842,
+ "drop_percentage": 3.3040906782531336
+ },
+ {
+ "rx_pps": 411878.7378240714,
+ "rx_pkts": 4093705,
+ "time_ms": 1646286489150,
+ "drop_pct": 5161,
+ "total_tx_pps": 409886,
+ "tx_pps": 412398,
+ "tx_pkts": 4098866,
+ "drop_percentage": 0.12591287443893018
+ },
+ {
+ "rx_pps": 371054.5743320845,
+ "rx_pkts": 3688099,
+ "time_ms": 1646286501657,
+ "drop_pct": 1028,
+ "total_tx_pps": 368912,
+ "tx_pps": 371158,
+ "tx_pkts": 3689127,
+ "ndr_pps": 164959,
+ "drop_percentage": 0.027865671200801707
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 10000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "fcb4e242cc2c4c36873e6f0361cb9a5f"
+ },
+ "synthesis": {
+ "avg_delay_usec": 504.00045239591617,
+ "total_tx_rate": 328252
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.intensive",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_256-fc_10k-rate_ndr-2.json",
+ "frame_sizes": [
+ "256"
+ ],
+ "rate": "ndr",
+ "flow_count": "10k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc6_intensive"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-03 05:55:45",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "e09f10fc7dc54e4a9b8a1c58b88028df",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "256"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 10000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_256-fc_10k-rate_ndr-1.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "256"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2504,
+ 2515
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc6_intensive",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.intensive",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_256-fc_10k-rate_ndr-1.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "256": {
+ "ndr": {
+ "load_percent_per_direction": 1.3671875,
+ "timestamp_sec": 1646287087.8915067,
+ "stats": {
+ "total_tx_rate": 307709,
+ "overall": {
+ "rx_pkts": 3077097,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 3367,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 3077097,
+ "avg_delay_usec": 432.50000146241734,
+ "min_delay_usec": 38,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1538548,
+ "min_delay_usec": 38,
+ "drop_pct": 0,
+ "max_delay_usec": 3281,
+ "tx_pkts": 1538549,
+ "avg_delay_usec": 428,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 1538549,
+ "min_delay_usec": 55,
+ "drop_pct": 0,
+ "max_delay_usec": 3367,
+ "tx_pkts": 1538548,
+ "avg_delay_usec": 437,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 679421472.0,
+ "theoretical_tx_rate_pps": 22644927.536231883
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 2.734375,
+ "duration_sec": 10.0,
+ "l2frame_size": "256",
+ "rate_pps": 309598,
+ "rate_bps": 683593750.0,
+ "time_taken_sec": 137.742746591568
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 255672.565299537,
+ "rx_pkts": 2319871,
+ "time_ms": 1646286962658,
+ "drop_pct": 203151166,
+ "total_tx_pps": 20547103,
+ "tx_pps": 22644926,
+ "tx_pkts": 205471037,
+ "drop_percentage": 98.87094987504248
+ },
+ {
+ "rx_pps": 335448.3699684173,
+ "rx_pkts": 3333855,
+ "time_ms": 1646286975189,
+ "drop_pct": 109194480,
+ "total_tx_pps": 11252833,
+ "tx_pps": 11322462,
+ "tx_pkts": 112528335,
+ "drop_percentage": 97.03731953378676
+ },
+ {
+ "rx_pps": 130166.49486928145,
+ "rx_pkts": 1293660,
+ "time_ms": 1646286987760,
+ "drop_pct": 54970487,
+ "total_tx_pps": 5626414,
+ "tx_pps": 5661230,
+ "tx_pkts": 56264147,
+ "drop_percentage": 97.70073826943471
+ },
+ {
+ "rx_pps": 188671.05892669645,
+ "rx_pkts": 1875296,
+ "time_ms": 1646287000320,
+ "drop_pct": 26259592,
+ "total_tx_pps": 2813488,
+ "tx_pps": 2830614,
+ "tx_pkts": 28134888,
+ "drop_percentage": 93.33462425725668
+ },
+ {
+ "rx_pps": 208503.260507737,
+ "rx_pkts": 2075129,
+ "time_ms": 1646287012832,
+ "drop_pct": 12010706,
+ "total_tx_pps": 1408583,
+ "tx_pps": 1415306,
+ "tx_pkts": 14085835,
+ "drop_percentage": 85.2679731091554
+ },
+ {
+ "rx_pps": 401016.7055138048,
+ "rx_pkts": 3985506,
+ "time_ms": 1646287025334,
+ "drop_pct": 3047496,
+ "total_tx_pps": 703300,
+ "tx_pps": 707652,
+ "tx_pkts": 7033002,
+ "drop_percentage": 43.331368311853176
+ },
+ {
+ "rx_pps": 353769.4579762555,
+ "rx_pkts": 3516295,
+ "time_ms": 1646287037843,
+ "drop_pct": 562,
+ "total_tx_pps": 351685,
+ "tx_pps": 353826,
+ "tx_pkts": 3516857,
+ "drop_percentage": 0.01598017775530822
+ },
+ {
+ "rx_pps": 176912.0,
+ "rx_pkts": 1758241,
+ "time_ms": 1646287050350,
+ "drop_pct": 0,
+ "total_tx_pps": 175824,
+ "tx_pps": 176912,
+ "tx_pkts": 1758241,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 265370.0,
+ "rx_pkts": 2637382,
+ "time_ms": 1646287062871,
+ "drop_pct": 0,
+ "total_tx_pps": 263738,
+ "tx_pps": 265370,
+ "tx_pkts": 2637382,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 309598.0,
+ "rx_pkts": 3077097,
+ "time_ms": 1646287075371,
+ "drop_pct": 0,
+ "total_tx_pps": 307709,
+ "tx_pps": 309598,
+ "tx_pkts": 3077097,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 331394.0121815451,
+ "rx_pkts": 3300519,
+ "time_ms": 1646287087890,
+ "drop_pct": 3167,
+ "total_tx_pps": 330368,
+ "tx_pps": 331712,
+ "tx_pkts": 3303686,
+ "ndr_pps": 154799,
+ "drop_percentage": 0.09586262132660307
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 10000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "e09f10fc7dc54e4a9b8a1c58b88028df"
+ },
+ "synthesis": {
+ "avg_delay_usec": 432.50000146241734,
+ "total_tx_rate": 307709
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.intensive",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_512-fc_10k-rate_ndr-2.json",
+ "frame_sizes": [
+ "512"
+ ],
+ "rate": "ndr",
+ "flow_count": "10k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc6_intensive"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-03 06:00:38",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "32f6745439f040fa96de86e0a3ad0abf",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "512"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 10000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_512-fc_10k-rate_ndr-0.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "512"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2504,
+ 2515
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc6_intensive",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.intensive",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_512-fc_10k-rate_ndr-0.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "512": {
+ "ndr": {
+ "load_percent_per_direction": 2.34375,
+ "timestamp_sec": 1646287380.6742508,
+ "stats": {
+ "total_tx_rate": 273652,
+ "overall": {
+ "rx_pkts": 2736528,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 2723,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 2736528,
+ "avg_delay_usec": 410.4993787748563,
+ "min_delay_usec": 41,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1368196,
+ "min_delay_usec": 45,
+ "drop_pct": 0,
+ "max_delay_usec": 2723,
+ "tx_pkts": 1368332,
+ "avg_delay_usec": 423,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 1368332,
+ "min_delay_usec": 41,
+ "drop_pct": 0,
+ "max_delay_usec": 2679,
+ "tx_pkts": 1368196,
+ "avg_delay_usec": 398,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 1164662912.0,
+ "theoretical_tx_rate_pps": 11748120.30075188
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 4.6875,
+ "duration_sec": 10.0,
+ "l2frame_size": "512",
+ "rate_pps": 275346,
+ "rate_bps": 1171875000.0,
+ "time_taken_sec": 137.6094572544098
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 422261.6287427662,
+ "rx_pkts": 4008862,
+ "time_ms": 1646287255615,
+ "drop_pct": 107525288,
+ "total_tx_pps": 11153415,
+ "tx_pps": 11748120,
+ "tx_pkts": 111534150,
+ "drop_percentage": 96.40570892412772
+ },
+ {
+ "rx_pps": 235563.01252603848,
+ "rx_pkts": 2345619,
+ "time_ms": 1646287268137,
+ "drop_pct": 56145341,
+ "total_tx_pps": 5849096,
+ "tx_pps": 5874060,
+ "tx_pkts": 58490960,
+ "drop_percentage": 95.98977517209497
+ },
+ {
+ "rx_pps": 214956.55098821394,
+ "rx_pkts": 2136346,
+ "time_ms": 1646287280641,
+ "drop_pct": 27053331,
+ "total_tx_pps": 2918967,
+ "tx_pps": 2937030,
+ "tx_pkts": 29189677,
+ "drop_percentage": 92.68115916459097
+ },
+ {
+ "rx_pps": 98852.65115506016,
+ "rx_pkts": 982546,
+ "time_ms": 1646287293143,
+ "drop_pct": 13613750,
+ "total_tx_pps": 1459629,
+ "tx_pps": 1468514,
+ "tx_pkts": 14596296,
+ "drop_percentage": 93.26852511075413
+ },
+ {
+ "rx_pps": 374357.7867755638,
+ "rx_pkts": 3720931,
+ "time_ms": 1646287305644,
+ "drop_pct": 3577210,
+ "total_tx_pps": 729814,
+ "tx_pps": 734256,
+ "tx_pkts": 7298141,
+ "drop_percentage": 49.01535884275187
+ },
+ {
+ "rx_pps": 366719.5290001208,
+ "rx_pkts": 3645011,
+ "time_ms": 1646287318156,
+ "drop_pct": 4060,
+ "total_tx_pps": 364907,
+ "tx_pps": 367128,
+ "tx_pkts": 3649071,
+ "drop_percentage": 0.11126119497263824
+ },
+ {
+ "rx_pps": 183564.0,
+ "rx_pkts": 1824537,
+ "time_ms": 1646287330655,
+ "drop_pct": 0,
+ "total_tx_pps": 182453,
+ "tx_pps": 183564,
+ "tx_pkts": 1824537,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 275346.0,
+ "rx_pkts": 2736528,
+ "time_ms": 1646287343177,
+ "drop_pct": 0,
+ "total_tx_pps": 273652,
+ "tx_pps": 275346,
+ "tx_pkts": 2736528,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 321054.59355599707,
+ "rx_pkts": 3190964,
+ "time_ms": 1646287355673,
+ "drop_pct": 1803,
+ "total_tx_pps": 319276,
+ "tx_pps": 321236,
+ "tx_pkts": 3192767,
+ "drop_percentage": 0.056471392995480096
+ },
+ {
+ "rx_pps": 298206.68394270656,
+ "rx_pkts": 2964029,
+ "time_ms": 1646287368173,
+ "drop_pct": 848,
+ "total_tx_pps": 296487,
+ "tx_pps": 298292,
+ "tx_pkts": 2964877,
+ "drop_percentage": 0.028601523773161584
+ },
+ {
+ "rx_pps": 286576.03641464544,
+ "rx_pkts": 2848426,
+ "time_ms": 1646287380673,
+ "drop_pct": 2405,
+ "total_tx_pps": 285083,
+ "tx_pps": 286818,
+ "tx_pkts": 2850831,
+ "ndr_pps": 137673,
+ "drop_percentage": 0.08436136691371744
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 10000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "32f6745439f040fa96de86e0a3ad0abf"
+ },
+ "synthesis": {
+ "avg_delay_usec": 410.4993787748563,
+ "total_tx_rate": 273652
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.intensive",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_768-fc_10k-rate_ndr-2.json",
+ "frame_sizes": [
+ "768"
+ ],
+ "rate": "ndr",
+ "flow_count": "10k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc6_intensive"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-03 06:12:50",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "7df3eeb5c69345d0a0f89371dec4d8c6",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "768"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 10000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_768-fc_10k-rate_ndr-2.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "768"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2504,
+ 2515
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc6_intensive",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.intensive",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_768-fc_10k-rate_ndr-2.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "768": {
+ "ndr": {
+ "load_percent_per_direction": 3.22265625,
+ "timestamp_sec": 1646288112.949391,
+ "stats": {
+ "total_tx_rate": 254057,
+ "overall": {
+ "rx_pkts": 2540579,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 6615,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 2540579,
+ "avg_delay_usec": 476.00064985186447,
+ "min_delay_usec": 33,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1270226,
+ "min_delay_usec": 33,
+ "drop_pct": 0,
+ "max_delay_usec": 6615,
+ "tx_pkts": 1270353,
+ "avg_delay_usec": 463,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 1270353,
+ "min_delay_usec": 36,
+ "drop_pct": 0,
+ "max_delay_usec": 4615,
+ "tx_pkts": 1270226,
+ "avg_delay_usec": 489,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 1601575328.0,
+ "theoretical_tx_rate_pps": 7931472.081218274
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 6.4453125,
+ "duration_sec": 10.0,
+ "l2frame_size": "768",
+ "rate_pps": 255604,
+ "rate_bps": 1611328124.0,
+ "time_taken_sec": 137.60951566696167
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 401443.3266594298,
+ "rx_pkts": 3873721,
+ "time_ms": 1646287987827,
+ "drop_pct": 72660892,
+ "total_tx_pps": 7653461,
+ "tx_pps": 7931472,
+ "tx_pkts": 76534613,
+ "drop_percentage": 94.9386024856492
+ },
+ {
+ "rx_pps": 270999.9900496978,
+ "rx_pkts": 2693334,
+ "time_ms": 1646288000350,
+ "drop_pct": 36720142,
+ "total_tx_pps": 3941347,
+ "tx_pps": 3965736,
+ "tx_pkts": 39413476,
+ "drop_percentage": 93.16646418093141
+ },
+ {
+ "rx_pps": 198550.00234079146,
+ "rx_pkts": 1973488,
+ "time_ms": 1646288012848,
+ "drop_pct": 17735231,
+ "total_tx_pps": 1970871,
+ "tx_pps": 1982868,
+ "tx_pkts": 19708719,
+ "drop_percentage": 89.98672617941328
+ },
+ {
+ "rx_pps": 199910.28390347675,
+ "rx_pkts": 1986809,
+ "time_ms": 1646288025358,
+ "drop_pct": 7866561,
+ "total_tx_pps": 985337,
+ "tx_pps": 991434,
+ "tx_pkts": 9853370,
+ "drop_percentage": 79.83624891788291
+ },
+ {
+ "rx_pps": 472617.2657889759,
+ "rx_pkts": 4697582,
+ "time_ms": 1646288037860,
+ "drop_pct": 229590,
+ "total_tx_pps": 492717,
+ "tx_pps": 495716,
+ "tx_pkts": 4927172,
+ "drop_percentage": 4.6596709024974166
+ },
+ {
+ "rx_pps": 247858.0,
+ "rx_pkts": 2463586,
+ "time_ms": 1646288050400,
+ "drop_pct": 0,
+ "total_tx_pps": 246358,
+ "tx_pps": 247858,
+ "tx_pkts": 2463586,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 369515.96694294043,
+ "rx_pkts": 3672805,
+ "time_ms": 1646288062900,
+ "drop_pct": 22563,
+ "total_tx_pps": 369536,
+ "tx_pps": 371786,
+ "tx_pkts": 3695368,
+ "drop_percentage": 0.6105751849342204
+ },
+ {
+ "rx_pps": 309577.99963821407,
+ "rx_pkts": 3076744,
+ "time_ms": 1646288075398,
+ "drop_pct": 2425,
+ "total_tx_pps": 307916,
+ "tx_pps": 309822,
+ "tx_pkts": 3079169,
+ "drop_percentage": 0.07875501474586162
+ },
+ {
+ "rx_pps": 278814.24160118186,
+ "rx_pkts": 2770997,
+ "time_ms": 1646288087918,
+ "drop_pct": 256,
+ "total_tx_pps": 277125,
+ "tx_pps": 278840,
+ "tx_pkts": 2771253,
+ "drop_percentage": 0.009237698615030819
+ },
+ {
+ "rx_pps": 263259.7617543409,
+ "rx_pkts": 2616539,
+ "time_ms": 1646288100438,
+ "drop_pct": 877,
+ "total_tx_pps": 261741,
+ "tx_pps": 263348,
+ "tx_pkts": 2617416,
+ "drop_percentage": 0.03350632837882859
+ },
+ {
+ "rx_pps": 255604.0,
+ "rx_pkts": 2540579,
+ "time_ms": 1646288112948,
+ "drop_pct": 0,
+ "total_tx_pps": 254057,
+ "tx_pps": 255604,
+ "tx_pkts": 2540579,
+ "ndr_pps": 127802,
+ "drop_percentage": 0.0
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 10000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "7df3eeb5c69345d0a0f89371dec4d8c6"
+ },
+ "synthesis": {
+ "avg_delay_usec": 476.00064985186447,
+ "total_tx_rate": 254057
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.intensive",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1024-fc_10k-rate_ndr-2.json",
+ "frame_sizes": [
+ "1024"
+ ],
+ "rate": "ndr",
+ "flow_count": "10k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc6_intensive"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-03 06:20:09",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "cd0872af22cc4e368a8a824b8f85ff54",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "1024"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 10000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1024-fc_10k-rate_ndr-2.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "1024"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2504,
+ 2515
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc6_intensive",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.intensive",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1024-fc_10k-rate_ndr-2.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "1024": {
+ "ndr": {
+ "load_percent_per_direction": 4.4921875,
+ "timestamp_sec": 1646288552.3423898,
+ "stats": {
+ "total_tx_rate": 267301,
+ "overall": {
+ "rx_pkts": 2673012,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 8541,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 2673012,
+ "avg_delay_usec": 483.49946577119744,
+ "min_delay_usec": 33,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1336438,
+ "min_delay_usec": 38,
+ "drop_pct": 0,
+ "max_delay_usec": 8541,
+ "tx_pkts": 1336574,
+ "avg_delay_usec": 494,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 1336574,
+ "min_delay_usec": 33,
+ "drop_pct": 0,
+ "max_delay_usec": 7095,
+ "tx_pkts": 1336438,
+ "avg_delay_usec": 473,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 2232497952.0,
+ "theoretical_tx_rate_pps": 5986590.038314176
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 8.984375,
+ "duration_sec": 10.0,
+ "l2frame_size": "1024",
+ "rate_pps": 268928,
+ "rate_bps": 2246093750.0,
+ "time_taken_sec": 137.60198616981506
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 288161.597988842,
+ "rx_pkts": 2804152,
+ "time_ms": 1646288427250,
+ "drop_pct": 55452425,
+ "total_tx_pps": 5825657,
+ "tx_pps": 5986590,
+ "tx_pkts": 58256577,
+ "drop_percentage": 95.1865486363883
+ },
+ {
+ "rx_pps": 213298.5964799784,
+ "rx_pkts": 2119868,
+ "time_ms": 1646288439760,
+ "drop_pct": 27628983,
+ "total_tx_pps": 2974885,
+ "tx_pps": 2993294,
+ "tx_pkts": 29748851,
+ "drop_percentage": 92.8741180625766
+ },
+ {
+ "rx_pps": 131366.48872957594,
+ "rx_pkts": 1305586,
+ "time_ms": 1646288452271,
+ "drop_pct": 13568832,
+ "total_tx_pps": 1487441,
+ "tx_pps": 1496646,
+ "tx_pkts": 14874418,
+ "drop_percentage": 91.22260783581582
+ },
+ {
+ "rx_pps": 290509.78790066997,
+ "rx_pkts": 2887523,
+ "time_ms": 1646288464771,
+ "drop_pct": 4550426,
+ "total_tx_pps": 743794,
+ "tx_pps": 748322,
+ "tx_pkts": 7437949,
+ "drop_percentage": 61.17850498840473
+ },
+ {
+ "rx_pps": 373382.29544448643,
+ "rx_pkts": 3711236,
+ "time_ms": 1646288477284,
+ "drop_pct": 7730,
+ "total_tx_pps": 371896,
+ "tx_pps": 374160,
+ "tx_pkts": 3718966,
+ "drop_percentage": 0.20785347325036044
+ },
+ {
+ "rx_pps": 187080.0,
+ "rx_pkts": 1863037,
+ "time_ms": 1646288489810,
+ "drop_pct": 0,
+ "total_tx_pps": 186303,
+ "tx_pps": 187080,
+ "tx_pkts": 1863037,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 280389.9082326065,
+ "rx_pkts": 2786939,
+ "time_ms": 1646288502310,
+ "drop_pct": 2287,
+ "total_tx_pps": 278922,
+ "tx_pps": 280620,
+ "tx_pkts": 2789226,
+ "drop_percentage": 0.0819940729076812
+ },
+ {
+ "rx_pps": 233850.0,
+ "rx_pkts": 2324119,
+ "time_ms": 1646288514811,
+ "drop_pct": 0,
+ "total_tx_pps": 232411,
+ "tx_pps": 233850,
+ "tx_pkts": 2324119,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 257236.0,
+ "rx_pkts": 2556543,
+ "time_ms": 1646288527323,
+ "drop_pct": 0,
+ "total_tx_pps": 255654,
+ "tx_pps": 257236,
+ "tx_pkts": 2556543,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 268928.0,
+ "rx_pkts": 2673012,
+ "time_ms": 1646288539831,
+ "drop_pct": 0,
+ "total_tx_pps": 267301,
+ "tx_pps": 268928,
+ "tx_pkts": 2673012,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 274722.439659442,
+ "rx_pkts": 2733353,
+ "time_ms": 1646288552341,
+ "drop_pct": 513,
+ "total_tx_pps": 273386,
+ "tx_pps": 274774,
+ "tx_pkts": 2733866,
+ "ndr_pps": 134464,
+ "drop_percentage": 0.018764635867302933
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 10000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "cd0872af22cc4e368a8a824b8f85ff54"
+ },
+ "synthesis": {
+ "avg_delay_usec": 483.49946577119744,
+ "total_tx_rate": 267301
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.intensive",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1280-fc_10k-rate_ndr-2.json",
+ "frame_sizes": [
+ "1280"
+ ],
+ "rate": "ndr",
+ "flow_count": "10k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc6_intensive"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-03 06:25:02",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "8be1bcbbe7c94f8f94b64ab8ff667462",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "1280"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 10000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1280-fc_10k-rate_ndr-1.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "1280"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2504,
+ 2515
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc6_intensive",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.intensive",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1280-fc_10k-rate_ndr-1.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "1280": {
+ "ndr": {
+ "load_percent_per_direction": 6.25,
+ "timestamp_sec": 1646288845.323408,
+ "stats": {
+ "total_tx_rate": 298647,
+ "overall": {
+ "rx_pkts": 2986473,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 784,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 2986473,
+ "avg_delay_usec": 509.001702007686,
+ "min_delay_usec": 55,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1493087,
+ "min_delay_usec": 76,
+ "drop_pct": 0,
+ "max_delay_usec": 766,
+ "tx_pkts": 1493386,
+ "avg_delay_usec": 492,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 1493386,
+ "min_delay_usec": 55,
+ "drop_pct": 0,
+ "max_delay_usec": 784,
+ "tx_pkts": 1493087,
+ "avg_delay_usec": 526,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 3105928800.0,
+ "theoretical_tx_rate_pps": 4807692.307692308
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 12.5,
+ "duration_sec": 10.0,
+ "l2frame_size": "1280",
+ "rate_pps": 300480,
+ "rate_bps": 3125000000.0,
+ "time_taken_sec": 137.64375615119934
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 328796.88960086054,
+ "rx_pkts": 3216282,
+ "time_ms": 1646288720187,
+ "drop_pct": 43812427,
+ "total_tx_pps": 4702870,
+ "tx_pps": 4807692,
+ "tx_pkts": 47028709,
+ "drop_percentage": 93.16102425860765
+ },
+ {
+ "rx_pps": 137967.17788955485,
+ "rx_pkts": 1371187,
+ "time_ms": 1646288732685,
+ "drop_pct": 22519440,
+ "total_tx_pps": 2389062,
+ "tx_pps": 2403846,
+ "tx_pkts": 23890627,
+ "drop_percentage": 94.26056503247068
+ },
+ {
+ "rx_pps": 118105.52734564139,
+ "rx_pkts": 1173792,
+ "time_ms": 1646288745223,
+ "drop_pct": 10771512,
+ "total_tx_pps": 1194530,
+ "tx_pps": 1201922,
+ "tx_pkts": 11945304,
+ "drop_percentage": 90.17361132039838
+ },
+ {
+ "rx_pps": 421709.7198215352,
+ "rx_pkts": 4191374,
+ "time_ms": 1646288757729,
+ "drop_pct": 1781569,
+ "total_tx_pps": 597294,
+ "tx_pps": 600960,
+ "tx_pkts": 5972943,
+ "drop_percentage": 29.82732297964337
+ },
+ {
+ "rx_pps": 300480.0,
+ "rx_pkts": 2986473,
+ "time_ms": 1646288770264,
+ "drop_pct": 0,
+ "total_tx_pps": 298647,
+ "tx_pps": 300480,
+ "tx_pkts": 2986473,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 418310.83577366004,
+ "rx_pkts": 4157802,
+ "time_ms": 1646288782786,
+ "drop_pct": 322131,
+ "total_tx_pps": 447993,
+ "tx_pps": 450720,
+ "tx_pkts": 4479933,
+ "drop_percentage": 7.190531644111642
+ },
+ {
+ "rx_pps": 374651.06490817876,
+ "rx_pkts": 3723473,
+ "time_ms": 1646288795289,
+ "drop_pct": 9431,
+ "total_tx_pps": 373290,
+ "tx_pps": 375600,
+ "tx_pkts": 3732904,
+ "drop_percentage": 0.2526451256180175
+ },
+ {
+ "rx_pps": 337828.9123930734,
+ "rx_pkts": 3357682,
+ "time_ms": 1646288807790,
+ "drop_pct": 2098,
+ "total_tx_pps": 335978,
+ "tx_pps": 338040,
+ "tx_pkts": 3359780,
+ "drop_percentage": 0.062444564822696724
+ },
+ {
+ "rx_pps": 318795.6445763084,
+ "rx_pkts": 3168353,
+ "time_ms": 1646288820308,
+ "drop_pct": 4615,
+ "total_tx_pps": 317296,
+ "tx_pps": 319260,
+ "tx_pkts": 3172968,
+ "drop_percentage": 0.14544741705557698
+ },
+ {
+ "rx_pps": 309849.17401039106,
+ "rx_pkts": 3079747,
+ "time_ms": 1646288832818,
+ "drop_pct": 207,
+ "total_tx_pps": 307995,
+ "tx_pps": 309870,
+ "tx_pkts": 3079954,
+ "drop_percentage": 0.006720879597552431
+ },
+ {
+ "rx_pps": 305137.8923991017,
+ "rx_pkts": 3033835,
+ "time_ms": 1646288845322,
+ "drop_pct": 359,
+ "total_tx_pps": 303419,
+ "tx_pps": 305174,
+ "tx_pkts": 3034194,
+ "ndr_pps": 150240,
+ "drop_percentage": 0.011831807722248478
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 10000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "8be1bcbbe7c94f8f94b64ab8ff667462"
+ },
+ "synthesis": {
+ "avg_delay_usec": 509.001702007686,
+ "total_tx_rate": 298647
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.intensive",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1518-fc_10k-rate_ndr-2.json",
+ "frame_sizes": [
+ "1518"
+ ],
+ "rate": "ndr",
+ "flow_count": "10k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc6_intensive"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-03 06:29:56",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "4235eac7551b4b33aa00fd498105e51e",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "1518"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 10000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1518-fc_10k-rate_ndr-0.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "1518"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2504,
+ 2515
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc6_intensive",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.intensive",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1518-fc_10k-rate_ndr-0.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "1518": {
+ "ndr": {
+ "load_percent_per_direction": 6.640625,
+ "timestamp_sec": 1646289138.556028,
+ "stats": {
+ "total_tx_rate": 268223,
+ "overall": {
+ "rx_pkts": 2682236,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 6699,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 2682236,
+ "avg_delay_usec": 468.9993408484563,
+ "min_delay_usec": 54,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1341050,
+ "min_delay_usec": 57,
+ "drop_pct": 0,
+ "max_delay_usec": 6699,
+ "tx_pkts": 1341186,
+ "avg_delay_usec": 482,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 1341186,
+ "min_delay_usec": 54,
+ "drop_pct": 0,
+ "max_delay_usec": 2508,
+ "tx_pkts": 1341050,
+ "avg_delay_usec": 456,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 3300215792.0,
+ "theoretical_tx_rate_pps": 4063719.1157347206
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 13.28125,
+ "duration_sec": 10.0,
+ "l2frame_size": "1518",
+ "rate_pps": 269856,
+ "rate_bps": 3320312500.0,
+ "time_taken_sec": 137.53674697875977
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 280327.64801039256,
+ "rx_pkts": 2747650,
+ "time_ms": 1646289013507,
+ "drop_pct": 37083151,
+ "total_tx_pps": 3983080,
+ "tx_pps": 4063718,
+ "tx_pkts": 39830801,
+ "drop_percentage": 93.10169534376173
+ },
+ {
+ "rx_pps": 139771.86715044265,
+ "rx_pkts": 1389067,
+ "time_ms": 1646289026009,
+ "drop_pct": 18803744,
+ "total_tx_pps": 2019281,
+ "tx_pps": 2031858,
+ "tx_pkts": 20192811,
+ "drop_percentage": 93.12098251204353
+ },
+ {
+ "rx_pps": 207291.5107155712,
+ "rx_pkts": 2060167,
+ "time_ms": 1646289038511,
+ "drop_pct": 8036635,
+ "total_tx_pps": 1009680,
+ "tx_pps": 1015928,
+ "tx_pkts": 10096802,
+ "drop_percentage": 79.59584628875558
+ },
+ {
+ "rx_pps": 448511.248959259,
+ "rx_pkts": 4460221,
+ "time_ms": 1646289051022,
+ "drop_pct": 591228,
+ "total_tx_pps": 505144,
+ "tx_pps": 507964,
+ "tx_pkts": 5051449,
+ "drop_percentage": 11.704126875278757
+ },
+ {
+ "rx_pps": 253982.0,
+ "rx_pkts": 2524203,
+ "time_ms": 1646289063521,
+ "drop_pct": 0,
+ "total_tx_pps": 252420,
+ "tx_pps": 253982,
+ "tx_pkts": 2524203,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 380882.85178005294,
+ "rx_pkts": 3785406,
+ "time_ms": 1646289076021,
+ "drop_pct": 886,
+ "total_tx_pps": 378629,
+ "tx_pps": 380972,
+ "tx_pkts": 3786292,
+ "drop_percentage": 0.02340020262568233
+ },
+ {
+ "rx_pps": 313470.2547614981,
+ "rx_pkts": 3115426,
+ "time_ms": 1646289088528,
+ "drop_pct": 39831,
+ "total_tx_pps": 315525,
+ "tx_pps": 317478,
+ "tx_pkts": 3155257,
+ "drop_percentage": 1.262369436150526
+ },
+ {
+ "rx_pps": 285724.4659684076,
+ "rx_pkts": 2839674,
+ "time_ms": 1646289101027,
+ "drop_pct": 55,
+ "total_tx_pps": 283972,
+ "tx_pps": 285730,
+ "tx_pkts": 2839729,
+ "drop_percentage": 0.001936804533108617
+ },
+ {
+ "rx_pps": 269856.0,
+ "rx_pkts": 2682236,
+ "time_ms": 1646289113526,
+ "drop_pct": 0,
+ "total_tx_pps": 268223,
+ "tx_pps": 269856,
+ "tx_pkts": 2682236,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 277476.3853338296,
+ "rx_pkts": 2758810,
+ "time_ms": 1646289126038,
+ "drop_pct": 3138,
+ "total_tx_pps": 276194,
+ "tx_pps": 277792,
+ "tx_pkts": 2761948,
+ "drop_percentage": 0.11361546270965275
+ },
+ {
+ "rx_pps": 273634.23308427056,
+ "rx_pkts": 2719516,
+ "time_ms": 1646289138555,
+ "drop_pct": 1886,
+ "total_tx_pps": 272140,
+ "tx_pps": 273824,
+ "tx_pkts": 2721402,
+ "ndr_pps": 134928,
+ "drop_percentage": 0.06930251392480788
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 10000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "4235eac7551b4b33aa00fd498105e51e"
+ },
+ "synthesis": {
+ "avg_delay_usec": 468.9993408484563,
+ "total_tx_rate": 268223
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.intensive",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_IMIX-fc_10k-rate_ndr-2.json",
+ "frame_sizes": [
+ "IMIX"
+ ],
+ "rate": "ndr",
+ "flow_count": "10k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc6_intensive"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-03 06:37:15",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "a5aadad5b25f444399ba2b3406c29196",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "IMIX"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 10000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_IMIX-fc_10k-rate_ndr-0.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "IMIX"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2504,
+ 2515
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc6_intensive",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.intensive",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_IMIX-fc_10k-rate_ndr-0.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "IMIX": {
+ "ndr": {
+ "load_percent_per_direction": 1.7578125,
+ "timestamp_sec": 1646289577.9506223,
+ "stats": {
+ "total_tx_rate": 285983,
+ "overall": {
+ "rx_pkts": 2859836,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 2310,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 2859836,
+ "avg_delay_usec": 433.0000503525377,
+ "min_delay_usec": 38,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1429846,
+ "min_delay_usec": 44,
+ "drop_pct": 0,
+ "max_delay_usec": 1917,
+ "tx_pkts": 1429990,
+ "avg_delay_usec": 432,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 1429990,
+ "min_delay_usec": 38,
+ "drop_pct": 0,
+ "max_delay_usec": 2310,
+ "tx_pkts": 1429846,
+ "avg_delay_usec": 434,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 873582737.3333333,
+ "theoretical_tx_rate_pps": 16368398.079441292
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 3.515625,
+ "duration_sec": 10.0,
+ "l2frame_size": "IMIX",
+ "rate_pps": 287724,
+ "rate_bps": 878906250.0,
+ "time_taken_sec": 137.6145327091217
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 427548.78458777367,
+ "rx_pkts": 3713299,
+ "time_ms": 1646289452854,
+ "drop_pct": 138447685,
+ "total_tx_pps": 14216098,
+ "tx_pps": 16368398,
+ "tx_pkts": 142160984,
+ "warning": "WARNING: There is a significant difference between requested TX rate (16368398) and actual TX rate (14216098). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "drop_percentage": 97.38796194601467
+ },
+ {
+ "rx_pps": 409967.19737723225,
+ "rx_pkts": 4074459,
+ "time_ms": 1646289465351,
+ "drop_pct": 77264193,
+ "total_tx_pps": 8133865,
+ "tx_pps": 8184198,
+ "tx_pkts": 81338652,
+ "drop_percentage": 94.99074683460454
+ },
+ {
+ "rx_pps": 260283.02132755163,
+ "rx_pkts": 2586823,
+ "time_ms": 1646289477850,
+ "drop_pct": 38082496,
+ "total_tx_pps": 4066931,
+ "tx_pps": 4092098,
+ "tx_pkts": 40669319,
+ "drop_percentage": 93.63937468439046
+ },
+ {
+ "rx_pps": 169274.29595105443,
+ "rx_pkts": 1682333,
+ "time_ms": 1646289490349,
+ "drop_pct": 18652320,
+ "total_tx_pps": 2033465,
+ "tx_pps": 2046048,
+ "tx_pkts": 20334653,
+ "drop_percentage": 91.72676809385437
+ },
+ {
+ "rx_pps": 213995.76989708896,
+ "rx_pkts": 2126798,
+ "time_ms": 1646289502858,
+ "drop_pct": 8040531,
+ "total_tx_pps": 1016732,
+ "tx_pps": 1023024,
+ "tx_pkts": 10167329,
+ "drop_percentage": 79.0820381636121
+ },
+ {
+ "rx_pps": 485832.8535943681,
+ "rx_pkts": 4828938,
+ "time_ms": 1646289515358,
+ "drop_pct": 255238,
+ "total_tx_pps": 508417,
+ "tx_pps": 511512,
+ "tx_pkts": 5084176,
+ "drop_percentage": 5.020243201651556
+ },
+ {
+ "rx_pps": 255755.89938127328,
+ "rx_pkts": 2541832,
+ "time_ms": 1646289527874,
+ "drop_pct": 1,
+ "total_tx_pps": 254183,
+ "tx_pps": 255756,
+ "tx_pkts": 2541833,
+ "drop_percentage": 3.934168767184941e-05
+ },
+ {
+ "rx_pps": 383459.02405717666,
+ "rx_pkts": 3811011,
+ "time_ms": 1646289540375,
+ "drop_pct": 1739,
+ "total_tx_pps": 381275,
+ "tx_pps": 383634,
+ "tx_pkts": 3812750,
+ "drop_percentage": 0.045610123926299914
+ },
+ {
+ "rx_pps": 319404.44880279334,
+ "rx_pkts": 3174727,
+ "time_ms": 1646289552880,
+ "drop_pct": 2878,
+ "total_tx_pps": 317760,
+ "tx_pps": 319694,
+ "tx_pkts": 3177605,
+ "drop_percentage": 0.09057135798817034
+ },
+ {
+ "rx_pps": 287724.0,
+ "rx_pkts": 2859836,
+ "time_ms": 1646289565399,
+ "drop_pct": 0,
+ "total_tx_pps": 285983,
+ "tx_pps": 287724,
+ "tx_pkts": 2859836,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 303577.59912532725,
+ "rx_pkts": 3017413,
+ "time_ms": 1646289577949,
+ "drop_pct": 1316,
+ "total_tx_pps": 301872,
+ "tx_pps": 303710,
+ "tx_pkts": 3018729,
+ "ndr_pps": 143862,
+ "drop_percentage": 0.043594506164680566
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 10000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "a5aadad5b25f444399ba2b3406c29196"
+ },
+ "synthesis": {
+ "avg_delay_usec": 433.0000503525377,
+ "total_tx_rate": 285983
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.intensive",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_9000-fc_10k-rate_ndr-2.json",
+ "frame_sizes": [
+ "9000"
+ ],
+ "rate": "ndr",
+ "flow_count": "10k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc6_intensive"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-03 06:47:01",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "7a447e0402ad455cad8e943d344bd43d",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "9000"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 10000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_9000-fc_10k-rate_ndr-1.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "9000"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2504,
+ 2515
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc6_intensive",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.intensive",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_9000-fc_10k-rate_ndr-1.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "9000": {
+ "ndr": {
+ "load_percent_per_direction": 25.0,
+ "timestamp_sec": 1646290163.7212827,
+ "stats": {
+ "total_tx_rate": 172160,
+ "overall": {
+ "rx_pkts": 1721608,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 8987,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 1721608,
+ "avg_delay_usec": 803.0008178400658,
+ "min_delay_usec": 86,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 860760,
+ "min_delay_usec": 86,
+ "drop_pct": 0,
+ "max_delay_usec": 7359,
+ "tx_pkts": 860848,
+ "avg_delay_usec": 787,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 860848,
+ "min_delay_usec": 90,
+ "drop_pct": 0,
+ "max_delay_usec": 8987,
+ "tx_pkts": 860760,
+ "avg_delay_usec": 819,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 12423065600.0,
+ "theoretical_tx_rate_pps": 692904.6563192905
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 50.0,
+ "duration_sec": 10.0,
+ "l2frame_size": "9000",
+ "rate_pps": 173226,
+ "rate_bps": 12500000000.0,
+ "time_taken_sec": 137.66240000724792
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 88271.08377210896,
+ "rx_pkts": 877835,
+ "time_ms": 1646290038548,
+ "drop_pct": 6012931,
+ "total_tx_pps": 689076,
+ "tx_pps": 692904,
+ "tx_pkts": 6890766,
+ "drop_percentage": 87.26070512334913
+ },
+ {
+ "rx_pps": 161139.26939074945,
+ "rx_pkts": 1601483,
+ "time_ms": 1646290051049,
+ "drop_pct": 1841731,
+ "total_tx_pps": 344321,
+ "tx_pps": 346452,
+ "tx_pkts": 3443214,
+ "drop_percentage": 53.48871722756704
+ },
+ {
+ "rx_pps": 173226.0,
+ "rx_pkts": 1721608,
+ "time_ms": 1646290063550,
+ "drop_pct": 0,
+ "total_tx_pps": 172160,
+ "tx_pps": 173226,
+ "tx_pkts": 1721608,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 211452.66814074648,
+ "rx_pkts": 2101524,
+ "time_ms": 1646290076054,
+ "drop_pct": 480878,
+ "total_tx_pps": 258240,
+ "tx_pps": 259838,
+ "tx_pkts": 2582402,
+ "drop_percentage": 18.62134555348083
+ },
+ {
+ "rx_pps": 212334.58730374108,
+ "rx_pkts": 2110288,
+ "time_ms": 1646290088562,
+ "drop_pct": 41716,
+ "total_tx_pps": 215200,
+ "tx_pps": 216532,
+ "tx_pkts": 2152004,
+ "drop_percentage": 1.9384722333229865
+ },
+ {
+ "rx_pps": 192487.71171054075,
+ "rx_pkts": 1915062,
+ "time_ms": 1646290101091,
+ "drop_pct": 23781,
+ "total_tx_pps": 193884,
+ "tx_pps": 194878,
+ "tx_pkts": 1938843,
+ "drop_percentage": 1.2265562502997922
+ },
+ {
+ "rx_pps": 183024.18234314685,
+ "rx_pkts": 1819170,
+ "time_ms": 1646290113598,
+ "drop_pct": 10216,
+ "total_tx_pps": 182938,
+ "tx_pps": 184052,
+ "tx_pkts": 1829386,
+ "drop_percentage": 0.5584387329956608
+ },
+ {
+ "rx_pps": 176570.2910542118,
+ "rx_pkts": 1755021,
+ "time_ms": 1646290126107,
+ "drop_pct": 20552,
+ "total_tx_pps": 177557,
+ "tx_pps": 178638,
+ "tx_pkts": 1775573,
+ "drop_percentage": 1.1574854990473498
+ },
+ {
+ "rx_pps": 175689.4205205337,
+ "rx_pkts": 1746179,
+ "time_ms": 1646290138633,
+ "drop_pct": 2411,
+ "total_tx_pps": 174859,
+ "tx_pps": 175932,
+ "tx_pkts": 1748590,
+ "drop_percentage": 0.13788252248954871
+ },
+ {
+ "rx_pps": 174555.66489782277,
+ "rx_pkts": 1734998,
+ "time_ms": 1646290151222,
+ "drop_pct": 222,
+ "total_tx_pps": 173522,
+ "tx_pps": 174578,
+ "tx_pkts": 1735220,
+ "drop_percentage": 0.012793766784615208
+ },
+ {
+ "rx_pps": 173460.8309452305,
+ "rx_pkts": 1724114,
+ "time_ms": 1646290163720,
+ "drop_pct": 4385,
+ "total_tx_pps": 172849,
+ "tx_pps": 173902,
+ "tx_pkts": 1728499,
+ "ndr_pps": 86613,
+ "drop_percentage": 0.2536883157005008
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 10000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "7a447e0402ad455cad8e943d344bd43d"
+ },
+ "synthesis": {
+ "avg_delay_usec": 803.0008178400658,
+ "total_tx_rate": 172160
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.intensive",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_64-fc_100k-rate_ndr-2.json",
+ "frame_sizes": [
+ "64"
+ ],
+ "rate": "ndr",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc6_intensive"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-03 06:54:21",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "c1e2fef7bb47473781a088db8235dca5",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "64"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_64-fc_100k-rate_ndr-1.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "64"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2504,
+ 2515
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc6_intensive",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.intensive",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_64-fc_100k-rate_ndr-1.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "64": {
+ "ndr": {
+ "load_percent_per_direction": 0.390625,
+ "timestamp_sec": 1646290604.5060358,
+ "stats": {
+ "total_tx_rate": 288854,
+ "overall": {
+ "rx_pkts": 2888548,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 5341,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 2888548,
+ "avg_delay_usec": 455.49962091680663,
+ "min_delay_usec": 47,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1444201,
+ "min_delay_usec": 47,
+ "drop_pct": 0,
+ "max_delay_usec": 5341,
+ "tx_pkts": 1444347,
+ "avg_delay_usec": 463,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 1444347,
+ "min_delay_usec": 59,
+ "drop_pct": 0,
+ "max_delay_usec": 5267,
+ "tx_pkts": 1444201,
+ "avg_delay_usec": 448,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 194109888.0,
+ "theoretical_tx_rate_pps": 74404761.90476191
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 0.78125,
+ "duration_sec": 10.0,
+ "l2frame_size": "64",
+ "rate_pps": 290642,
+ "rate_bps": 195312500.0,
+ "time_taken_sec": 137.62960720062256
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 1053954.263475746,
+ "rx_pkts": 3807089,
+ "time_ms": 1646290479366,
+ "drop_pct": 264957461,
+ "total_tx_pps": 26876455,
+ "tx_pps": 74404760,
+ "tx_pkts": 268764550,
+ "warning": "WARNING: There is a significant difference between requested TX rate (74404760) and actual TX rate (26876455). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "drop_percentage": 98.58348543362582
+ },
+ {
+ "rx_pps": 406661.06757053314,
+ "rx_pkts": 2956606,
+ "time_ms": 1646290491895,
+ "drop_pct": 267521167,
+ "total_tx_pps": 27047777,
+ "tx_pps": 37202380,
+ "tx_pkts": 270477773,
+ "warning": "WARNING: There is a significant difference between requested TX rate (37202380) and actual TX rate (27047777). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "drop_percentage": 98.90689502238692
+ },
+ {
+ "rx_pps": 148664.22620742844,
+ "rx_pkts": 1477497,
+ "time_ms": 1646290504402,
+ "drop_pct": 183390128,
+ "total_tx_pps": 18486762,
+ "tx_pps": 18601190,
+ "tx_pkts": 184867625,
+ "drop_percentage": 99.20078109944886
+ },
+ {
+ "rx_pps": 118020.08758137107,
+ "rx_pkts": 1172942,
+ "time_ms": 1646290516918,
+ "drop_pct": 91260961,
+ "total_tx_pps": 9243390,
+ "tx_pps": 9300594,
+ "tx_pkts": 92433903,
+ "drop_percentage": 98.73104784940219
+ },
+ {
+ "rx_pps": 400017.6984889188,
+ "rx_pkts": 3975576,
+ "time_ms": 1646290529444,
+ "drop_pct": 42241392,
+ "total_tx_pps": 4621696,
+ "tx_pps": 4650296,
+ "tx_pkts": 46216968,
+ "drop_percentage": 91.39801641682769
+ },
+ {
+ "rx_pps": 118631.30644199387,
+ "rx_pkts": 1181390,
+ "time_ms": 1646290541984,
+ "drop_pct": 21973599,
+ "total_tx_pps": 2315498,
+ "tx_pps": 2325148,
+ "tx_pkts": 23154989,
+ "drop_percentage": 94.89790299619663
+ },
+ {
+ "rx_pps": 213393.54643034592,
+ "rx_pkts": 2120812,
+ "time_ms": 1646290554504,
+ "drop_pct": 9433431,
+ "total_tx_pps": 1155424,
+ "tx_pps": 1162574,
+ "tx_pkts": 11554243,
+ "drop_percentage": 81.64473431967807
+ },
+ {
+ "rx_pps": 570597.5399708707,
+ "rx_pkts": 5671457,
+ "time_ms": 1646290567004,
+ "drop_pct": 106238,
+ "total_tx_pps": 577769,
+ "tx_pps": 581286,
+ "tx_pkts": 5777695,
+ "drop_percentage": 1.8387609591714342
+ },
+ {
+ "rx_pps": 290642.0,
+ "rx_pkts": 2888548,
+ "time_ms": 1646290579503,
+ "drop_pct": 0,
+ "total_tx_pps": 288854,
+ "tx_pps": 290642,
+ "tx_pkts": 2888548,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 434891.10995581164,
+ "rx_pkts": 4322604,
+ "time_ms": 1646290592004,
+ "drop_pct": 10664,
+ "total_tx_pps": 433326,
+ "tx_pps": 435964,
+ "tx_pkts": 4333268,
+ "drop_percentage": 0.24609601806304157
+ },
+ {
+ "rx_pps": 362705.9824699818,
+ "rx_pkts": 3605119,
+ "time_ms": 1646290604505,
+ "drop_pct": 5944,
+ "total_tx_pps": 361106,
+ "tx_pps": 363304,
+ "tx_pkts": 3611063,
+ "ndr_pps": 145321,
+ "drop_percentage": 0.1646052699717507
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "c1e2fef7bb47473781a088db8235dca5"
+ },
+ "synthesis": {
+ "avg_delay_usec": 455.49962091680663,
+ "total_tx_rate": 288854
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.intensive",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_128-fc_100k-rate_ndr-2.json",
+ "frame_sizes": [
+ "128"
+ ],
+ "rate": "ndr",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc6_intensive"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-03 06:59:13",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "1b62171069bc40c7914f84ffbb050f31",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "128"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_128-fc_100k-rate_ndr-0.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "128"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2504,
+ 2515
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc6_intensive",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.intensive",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_128-fc_100k-rate_ndr-0.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "128": {
+ "ndr": {
+ "load_percent_per_direction": 0.68359375,
+ "timestamp_sec": 1646290896.3823671,
+ "stats": {
+ "total_tx_rate": 286902,
+ "overall": {
+ "rx_pkts": 2869029,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 2743,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 2869029,
+ "avg_delay_usec": 464.9996511014702,
+ "min_delay_usec": 58,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1434443,
+ "min_delay_usec": 62,
+ "drop_pct": 0,
+ "max_delay_usec": 2743,
+ "tx_pkts": 1434586,
+ "avg_delay_usec": 472,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 1434586,
+ "min_delay_usec": 58,
+ "drop_pct": 0,
+ "max_delay_usec": 1909,
+ "tx_pkts": 1434443,
+ "avg_delay_usec": 458,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 339691968.0,
+ "theoretical_tx_rate_pps": 42229729.72972973
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 1.3671875,
+ "duration_sec": 10.0,
+ "l2frame_size": "128",
+ "rate_pps": 288678,
+ "rate_bps": 341796874.0,
+ "time_taken_sec": 137.53828620910645
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 654315.3293594539,
+ "rx_pkts": 4006536,
+ "time_ms": 1646290771352,
+ "drop_pct": 254576624,
+ "total_tx_pps": 25858316,
+ "tx_pps": 42229728,
+ "tx_pkts": 258583160,
+ "warning": "WARNING: There is a significant difference between requested TX rate (42229728) and actual TX rate (25858316). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "drop_percentage": 98.45058123661262
+ },
+ {
+ "rx_pps": 362626.5714189805,
+ "rx_pkts": 3603602,
+ "time_ms": 1646290783851,
+ "drop_pct": 206225385,
+ "total_tx_pps": 20982898,
+ "tx_pps": 21114864,
+ "tx_pkts": 209828987,
+ "drop_percentage": 98.28260048741502
+ },
+ {
+ "rx_pps": 399253.9049378252,
+ "rx_pkts": 3967988,
+ "time_ms": 1646290796350,
+ "drop_pct": 100957131,
+ "total_tx_pps": 10492511,
+ "tx_pps": 10557432,
+ "tx_pkts": 104925119,
+ "drop_percentage": 96.21826685752913
+ },
+ {
+ "rx_pps": 328008.7854675711,
+ "rx_pkts": 3259916,
+ "time_ms": 1646290808847,
+ "drop_pct": 49202614,
+ "total_tx_pps": 5246253,
+ "tx_pps": 5278716,
+ "tx_pkts": 52462530,
+ "drop_percentage": 93.78620131358514
+ },
+ {
+ "rx_pps": 431037.2563654665,
+ "rx_pkts": 4283865,
+ "time_ms": 1646290821368,
+ "drop_pct": 21947402,
+ "total_tx_pps": 2623126,
+ "tx_pps": 2639358,
+ "tx_pkts": 26231267,
+ "drop_percentage": 83.6688597619017
+ },
+ {
+ "rx_pps": 132040.09847098283,
+ "rx_pkts": 1312941,
+ "time_ms": 1646290833872,
+ "drop_pct": 11809280,
+ "total_tx_pps": 1312222,
+ "tx_pps": 1319678,
+ "tx_pkts": 13122221,
+ "drop_percentage": 89.99452150668702
+ },
+ {
+ "rx_pps": 466334.61032833933,
+ "rx_pkts": 4635133,
+ "time_ms": 1646290846377,
+ "drop_pct": 1923327,
+ "total_tx_pps": 655846,
+ "tx_pps": 659838,
+ "tx_pkts": 6558460,
+ "drop_percentage": 29.325893578675483
+ },
+ {
+ "rx_pps": 329647.56411198626,
+ "rx_pkts": 3276535,
+ "time_ms": 1646290858875,
+ "drop_pct": 2688,
+ "total_tx_pps": 327922,
+ "tx_pps": 329918,
+ "tx_pkts": 3279223,
+ "drop_percentage": 0.08197063755651872
+ },
+ {
+ "rx_pps": 164958.0,
+ "rx_pkts": 1639603,
+ "time_ms": 1646290871373,
+ "drop_pct": 0,
+ "total_tx_pps": 163960,
+ "tx_pps": 164958,
+ "tx_pkts": 1639603,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 247438.0,
+ "rx_pkts": 2459165,
+ "time_ms": 1646290883873,
+ "drop_pct": 0,
+ "total_tx_pps": 245916,
+ "tx_pps": 247438,
+ "tx_pkts": 2459165,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 288678.0,
+ "rx_pkts": 2869029,
+ "time_ms": 1646290896381,
+ "drop_pct": 0,
+ "total_tx_pps": 286902,
+ "tx_pps": 288678,
+ "tx_pkts": 2869029,
+ "ndr_pps": 144339,
+ "drop_percentage": 0.0
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "1b62171069bc40c7914f84ffbb050f31"
+ },
+ "synthesis": {
+ "avg_delay_usec": 464.9996511014702,
+ "total_tx_rate": 286902
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.intensive",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_256-fc_100k-rate_ndr-2.json",
+ "frame_sizes": [
+ "256"
+ ],
+ "rate": "ndr",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc6_intensive"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-03 07:11:26",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "d4e52542fffb464dab4ee0f0bbe41424",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "256"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_256-fc_100k-rate_ndr-2.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "256"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2504,
+ 2515
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc6_intensive",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.intensive",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_256-fc_100k-rate_ndr-2.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "256": {
+ "ndr": {
+ "load_percent_per_direction": 1.3671875,
+ "timestamp_sec": 1646291629.1270602,
+ "stats": {
+ "total_tx_rate": 307725,
+ "overall": {
+ "rx_pkts": 3077236,
+ "drop_percentage": 0.0005199444179417221,
+ "drop_pct": 16,
+ "max_delay_usec": 4557,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 3077252,
+ "avg_delay_usec": 448.49974847558,
+ "min_delay_usec": 39,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1538532,
+ "min_delay_usec": 41,
+ "drop_pct": 16,
+ "max_delay_usec": 4557,
+ "tx_pkts": 1538704,
+ "avg_delay_usec": 453,
+ "drop_percentage": 0.0010398361218272
+ },
+ "0": {
+ "rx_pkts": 1538704,
+ "min_delay_usec": 39,
+ "drop_pct": 0,
+ "max_delay_usec": 4475,
+ "tx_pkts": 1538548,
+ "avg_delay_usec": 444,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 679456800.0,
+ "theoretical_tx_rate_pps": 22644927.536231883
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 2.734375,
+ "duration_sec": 10.0,
+ "l2frame_size": "256",
+ "rate_pps": 309598,
+ "rate_bps": 683593750.0,
+ "time_taken_sec": 137.6123342514038
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 454315.7916803991,
+ "rx_pkts": 4114594,
+ "time_ms": 1646291504021,
+ "drop_pct": 200973317,
+ "total_tx_pps": 20508791,
+ "tx_pps": 22644926,
+ "tx_pkts": 205087911,
+ "drop_percentage": 97.99374132783477
+ },
+ {
+ "rx_pps": 341741.1574105596,
+ "rx_pkts": 3396225,
+ "time_ms": 1646291516524,
+ "drop_pct": 109126448,
+ "total_tx_pps": 11252267,
+ "tx_pps": 11322462,
+ "tx_pkts": 112522673,
+ "drop_percentage": 96.98174162641871
+ },
+ {
+ "rx_pps": 161288.4881766711,
+ "rx_pkts": 1602966,
+ "time_ms": 1646291529028,
+ "drop_pct": 54661181,
+ "total_tx_pps": 5626414,
+ "tx_pps": 5661230,
+ "tx_pkts": 56264147,
+ "drop_percentage": 97.15099919669981
+ },
+ {
+ "rx_pps": 115955.83218252,
+ "rx_pkts": 1152543,
+ "time_ms": 1646291541545,
+ "drop_pct": 26982345,
+ "total_tx_pps": 2813488,
+ "tx_pps": 2830614,
+ "tx_pkts": 28134888,
+ "drop_percentage": 95.90350955013577
+ },
+ {
+ "rx_pps": 161080.9212724765,
+ "rx_pkts": 1600903,
+ "time_ms": 1646291554048,
+ "drop_pct": 12465118,
+ "total_tx_pps": 1406602,
+ "tx_pps": 1415306,
+ "tx_pkts": 14066021,
+ "drop_percentage": 88.61865057644944
+ },
+ {
+ "rx_pps": 427270.71843328327,
+ "rx_pkts": 4246431,
+ "time_ms": 1646291566567,
+ "drop_pct": 2786570,
+ "total_tx_pps": 703300,
+ "tx_pps": 707652,
+ "tx_pkts": 7033001,
+ "drop_percentage": 39.62135082875717
+ },
+ {
+ "rx_pps": 353642.3849503518,
+ "rx_pkts": 3524578,
+ "time_ms": 1646291579093,
+ "drop_pct": 1830,
+ "total_tx_pps": 352640,
+ "tx_pps": 353826,
+ "tx_pkts": 3526408,
+ "drop_percentage": 0.051894165394361626
+ },
+ {
+ "rx_pps": 176912.0,
+ "rx_pkts": 1758331,
+ "time_ms": 1646291591612,
+ "drop_pct": 0,
+ "total_tx_pps": 175833,
+ "tx_pps": 176912,
+ "tx_pkts": 1758331,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 265370.0,
+ "rx_pkts": 2637515,
+ "time_ms": 1646291604122,
+ "drop_pct": 0,
+ "total_tx_pps": 263751,
+ "tx_pps": 265370,
+ "tx_pkts": 2637515,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 309596.39026248094,
+ "rx_pkts": 3077236,
+ "time_ms": 1646291616626,
+ "drop_pct": 16,
+ "total_tx_pps": 307725,
+ "tx_pps": 309598,
+ "tx_pkts": 3077252,
+ "drop_percentage": 0.0005199444179417221
+ },
+ {
+ "rx_pps": 331593.3824199975,
+ "rx_pkts": 3295874,
+ "time_ms": 1646291629126,
+ "drop_pct": 1179,
+ "total_tx_pps": 329705,
+ "tx_pps": 331712,
+ "tx_pkts": 3297053,
+ "ndr_pps": 154799,
+ "drop_percentage": 0.035759206782541866
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "d4e52542fffb464dab4ee0f0bbe41424"
+ },
+ "synthesis": {
+ "avg_delay_usec": 448.49974847558,
+ "total_tx_rate": 307725
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.intensive",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_512-fc_100k-rate_ndr-2.json",
+ "frame_sizes": [
+ "512"
+ ],
+ "rate": "ndr",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc6_intensive"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-03 07:13:52",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "25dca33bff7e45b3aef3a47996f30aaa",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "512"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_512-fc_100k-rate_ndr-0.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "512"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2504,
+ 2515
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc6_intensive",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.intensive",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_512-fc_100k-rate_ndr-0.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "512": {
+ "ndr": {
+ "load_percent_per_direction": 2.1484375,
+ "timestamp_sec": 1646291775.9324973,
+ "stats": {
+ "total_tx_rate": 250873,
+ "overall": {
+ "rx_pkts": 2508732,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 4401,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 2508732,
+ "avg_delay_usec": 351.5005273580438,
+ "min_delay_usec": 37,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1254303,
+ "min_delay_usec": 39,
+ "drop_pct": 0,
+ "max_delay_usec": 3459,
+ "tx_pkts": 1254429,
+ "avg_delay_usec": 341,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 1254429,
+ "min_delay_usec": 37,
+ "drop_pct": 0,
+ "max_delay_usec": 4401,
+ "tx_pkts": 1254303,
+ "avg_delay_usec": 362,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 1067715488.0,
+ "theoretical_tx_rate_pps": 11748120.30075188
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 4.296875,
+ "duration_sec": 10.0,
+ "l2frame_size": "512",
+ "rate_pps": 252400,
+ "rate_bps": 1074218750.0,
+ "time_taken_sec": 137.65872263908386
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 396012.6918251163,
+ "rx_pkts": 3753919,
+ "time_ms": 1646291650778,
+ "drop_pct": 107609913,
+ "total_tx_pps": 11136383,
+ "tx_pps": 11748120,
+ "tx_pkts": 111363832,
+ "drop_percentage": 96.62913988089059
+ },
+ {
+ "rx_pps": 366842.0367461427,
+ "rx_pkts": 3645860,
+ "time_ms": 1646291663279,
+ "drop_pct": 54733492,
+ "total_tx_pps": 5837935,
+ "tx_pps": 5874060,
+ "tx_pkts": 58379352,
+ "drop_percentage": 93.75488100655862
+ },
+ {
+ "rx_pps": 145725.16553904826,
+ "rx_pkts": 1448144,
+ "time_ms": 1646291675798,
+ "drop_pct": 27738595,
+ "total_tx_pps": 2918673,
+ "tx_pps": 2937030,
+ "tx_pkts": 29186739,
+ "drop_percentage": 95.03834943670823
+ },
+ {
+ "rx_pps": 117366.44222363783,
+ "rx_pkts": 1166564,
+ "time_ms": 1646291688313,
+ "drop_pct": 13429734,
+ "total_tx_pps": 1459629,
+ "tx_pps": 1468514,
+ "tx_pkts": 14596298,
+ "drop_percentage": 92.00780910337676
+ },
+ {
+ "rx_pps": 388855.0412373564,
+ "rx_pkts": 3865026,
+ "time_ms": 1646291700839,
+ "drop_pct": 3433114,
+ "total_tx_pps": 729814,
+ "tx_pps": 734256,
+ "tx_pkts": 7298140,
+ "drop_percentage": 47.04094467905521
+ },
+ {
+ "rx_pps": 358806.9628110826,
+ "rx_pkts": 3566364,
+ "time_ms": 1646291713349,
+ "drop_pct": 82707,
+ "total_tx_pps": 364907,
+ "tx_pps": 367128,
+ "tx_pkts": 3649071,
+ "drop_percentage": 2.2665220819216727
+ },
+ {
+ "rx_pps": 183564.0,
+ "rx_pkts": 1824354,
+ "time_ms": 1646291725861,
+ "drop_pct": 0,
+ "total_tx_pps": 182435,
+ "tx_pps": 183564,
+ "tx_pkts": 1824354,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 275341.37200471794,
+ "rx_pkts": 2736758,
+ "time_ms": 1646291738359,
+ "drop_pct": 46,
+ "total_tx_pps": 273680,
+ "tx_pps": 275346,
+ "tx_pkts": 2736804,
+ "drop_percentage": 0.001680792632574346
+ },
+ {
+ "rx_pps": 229454.0,
+ "rx_pkts": 2280430,
+ "time_ms": 1646291750900,
+ "drop_pct": 0,
+ "total_tx_pps": 228043,
+ "tx_pps": 229454,
+ "tx_pkts": 2280430,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 252400.0,
+ "rx_pkts": 2508732,
+ "time_ms": 1646291763421,
+ "drop_pct": 0,
+ "total_tx_pps": 250873,
+ "tx_pps": 252400,
+ "tx_pkts": 2508732,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 263683.34931604785,
+ "rx_pkts": 2620750,
+ "time_ms": 1646291775931,
+ "drop_pct": 1875,
+ "total_tx_pps": 262262,
+ "tx_pps": 263872,
+ "tx_pkts": 2622625,
+ "ndr_pps": 126200,
+ "drop_percentage": 0.07149325580286926
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "25dca33bff7e45b3aef3a47996f30aaa"
+ },
+ "synthesis": {
+ "avg_delay_usec": 351.5005273580438,
+ "total_tx_rate": 250873
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.intensive",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_768-fc_100k-rate_ndr-2.json",
+ "frame_sizes": [
+ "768"
+ ],
+ "rate": "ndr",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc6_intensive"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-03 07:26:05",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "99f490ebe6c2437a9632bddc2ea7163b",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "768"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_768-fc_100k-rate_ndr-2.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "768"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2504,
+ 2515
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc6_intensive",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.intensive",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_768-fc_100k-rate_ndr-2.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "768": {
+ "ndr": {
+ "load_percent_per_direction": 3.7109375,
+ "timestamp_sec": 1646292508.196054,
+ "stats": {
+ "total_tx_rate": 292520,
+ "overall": {
+ "rx_pkts": 2925176,
+ "drop_percentage": 0.000854642125447106,
+ "drop_pct": 25,
+ "max_delay_usec": 794,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 2925201,
+ "avg_delay_usec": 440.00094079809213,
+ "min_delay_usec": 38,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1462502,
+ "min_delay_usec": 38,
+ "drop_pct": 25,
+ "max_delay_usec": 698,
+ "tx_pkts": 1462674,
+ "avg_delay_usec": 424,
+ "drop_percentage": 0.0017091983586226321
+ },
+ "0": {
+ "rx_pkts": 1462674,
+ "min_delay_usec": 39,
+ "drop_pct": 0,
+ "max_delay_usec": 794,
+ "tx_pkts": 1462527,
+ "avg_delay_usec": 456,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 1844046080.0,
+ "theoretical_tx_rate_pps": 7931472.081218274
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 7.421875,
+ "duration_sec": 10.0,
+ "l2frame_size": "768",
+ "rate_pps": 294330,
+ "rate_bps": 1855468750.0,
+ "time_taken_sec": 137.6208794116974
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 359474.4042878791,
+ "rx_pkts": 3462705,
+ "time_ms": 1646292383075,
+ "drop_pct": 72938695,
+ "total_tx_pps": 7640140,
+ "tx_pps": 7931472,
+ "tx_pkts": 76401400,
+ "drop_percentage": 95.46774666432815
+ },
+ {
+ "rx_pps": 221917.01896656543,
+ "rx_pkts": 2205522,
+ "time_ms": 1646292395578,
+ "drop_pct": 37207940,
+ "total_tx_pps": 3941346,
+ "tx_pps": 3965736,
+ "tx_pkts": 39413462,
+ "drop_percentage": 94.40414039243748
+ },
+ {
+ "rx_pps": 120218.84357194848,
+ "rx_pkts": 1194795,
+ "time_ms": 1646292408080,
+ "drop_pct": 18511939,
+ "total_tx_pps": 1970673,
+ "tx_pps": 1982868,
+ "tx_pkts": 19706734,
+ "drop_percentage": 93.93712321889564
+ },
+ {
+ "rx_pps": 237679.50037510015,
+ "rx_pkts": 2362178,
+ "time_ms": 1646292420599,
+ "drop_pct": 7491190,
+ "total_tx_pps": 985336,
+ "tx_pps": 991434,
+ "tx_pkts": 9853368,
+ "drop_percentage": 76.02669462867925
+ },
+ {
+ "rx_pps": 467656.5430226268,
+ "rx_pkts": 4647806,
+ "time_ms": 1646292433101,
+ "drop_pct": 278869,
+ "total_tx_pps": 492667,
+ "tx_pps": 495716,
+ "tx_pkts": 4926675,
+ "drop_percentage": 5.660389613684686
+ },
+ {
+ "rx_pps": 247858.0,
+ "rx_pkts": 2463587,
+ "time_ms": 1646292445616,
+ "drop_pct": 0,
+ "total_tx_pps": 246358,
+ "tx_pps": 247858,
+ "tx_pkts": 2463587,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 371611.02398405195,
+ "rx_pkts": 3693258,
+ "time_ms": 1646292458113,
+ "drop_pct": 1739,
+ "total_tx_pps": 369499,
+ "tx_pps": 371786,
+ "tx_pkts": 3694997,
+ "drop_percentage": 0.04706363767007118
+ },
+ {
+ "rx_pps": 309695.5350187483,
+ "rx_pkts": 3078222,
+ "time_ms": 1646292470645,
+ "drop_pct": 1257,
+ "total_tx_pps": 307947,
+ "tx_pps": 309822,
+ "tx_pkts": 3079479,
+ "drop_percentage": 0.04081859301524706
+ },
+ {
+ "rx_pps": 278840.0,
+ "rx_pkts": 2775715,
+ "time_ms": 1646292483196,
+ "drop_pct": 0,
+ "total_tx_pps": 277571,
+ "tx_pps": 278840,
+ "tx_pkts": 2775715,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 294327.48453183216,
+ "rx_pkts": 2925176,
+ "time_ms": 1646292495696,
+ "drop_pct": 25,
+ "total_tx_pps": 292520,
+ "tx_pps": 294330,
+ "tx_pkts": 2925201,
+ "drop_percentage": 0.000854642125447106
+ },
+ {
+ "rx_pps": 301774.3450893266,
+ "rx_pkts": 2999187,
+ "time_ms": 1646292508195,
+ "drop_pct": 2998,
+ "total_tx_pps": 300218,
+ "tx_pps": 302076,
+ "tx_pkts": 3002185,
+ "ndr_pps": 147165,
+ "drop_percentage": 0.09986060152855337
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "99f490ebe6c2437a9632bddc2ea7163b"
+ },
+ "synthesis": {
+ "avg_delay_usec": 440.00094079809213,
+ "total_tx_rate": 292520
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.intensive",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1024-fc_100k-rate_ndr-2.json",
+ "frame_sizes": [
+ "1024"
+ ],
+ "rate": "ndr",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc6_intensive"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-03 07:33:24",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "e7ae74dbcfeb4aaf8774388598c054af",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "1024"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1024-fc_100k-rate_ndr-2.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "1024"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2504,
+ 2515
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc6_intensive",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.intensive",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1024-fc_100k-rate_ndr-2.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "1024": {
+ "ndr": {
+ "load_percent_per_direction": 4.78515625,
+ "timestamp_sec": 1646292947.5717177,
+ "stats": {
+ "total_tx_rate": 284733,
+ "overall": {
+ "rx_pkts": 2847306,
+ "drop_percentage": 0.0009131355247649378,
+ "drop_pct": 26,
+ "max_delay_usec": 4486,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 2847332,
+ "avg_delay_usec": 460.00053735004246,
+ "min_delay_usec": 38,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1423568,
+ "min_delay_usec": 38,
+ "drop_pct": 26,
+ "max_delay_usec": 829,
+ "tx_pkts": 1423738,
+ "avg_delay_usec": 451,
+ "drop_percentage": 0.0018261786929898618
+ },
+ "0": {
+ "rx_pkts": 1423738,
+ "min_delay_usec": 38,
+ "drop_pct": 0,
+ "max_delay_usec": 4486,
+ "tx_pkts": 1423594,
+ "avg_delay_usec": 469,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 2378090016.0,
+ "theoretical_tx_rate_pps": 5986590.038314176
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 9.5703125,
+ "duration_sec": 10.0,
+ "l2frame_size": "1024",
+ "rate_pps": 286466,
+ "rate_bps": 2392578124.0,
+ "time_taken_sec": 137.69065976142883
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 385174.3857818964,
+ "rx_pkts": 3744698,
+ "time_ms": 1646292822382,
+ "drop_pct": 54457437,
+ "total_tx_pps": 5820213,
+ "tx_pps": 5986590,
+ "tx_pkts": 58202135,
+ "drop_percentage": 93.5660470187219
+ },
+ {
+ "rx_pps": 371064.1070337179,
+ "rx_pkts": 3687635,
+ "time_ms": 1646292834881,
+ "drop_pct": 26059720,
+ "total_tx_pps": 2974735,
+ "tx_pps": 2993294,
+ "tx_pkts": 29747355,
+ "drop_percentage": 87.6034860914525
+ },
+ {
+ "rx_pps": 122785.19012242564,
+ "rx_pkts": 1220301,
+ "time_ms": 1646292847393,
+ "drop_pct": 13654120,
+ "total_tx_pps": 1487442,
+ "tx_pps": 1496646,
+ "tx_pkts": 14874421,
+ "drop_percentage": 91.7959764618737
+ },
+ {
+ "rx_pps": 352679.3934021328,
+ "rx_pkts": 3505458,
+ "time_ms": 1646292859908,
+ "drop_pct": 3932491,
+ "total_tx_pps": 743794,
+ "tx_pps": 748322,
+ "tx_pkts": 7437949,
+ "drop_percentage": 52.87063678441463
+ },
+ {
+ "rx_pps": 366733.73037974344,
+ "rx_pkts": 3649920,
+ "time_ms": 1646292872437,
+ "drop_pct": 73910,
+ "total_tx_pps": 372383,
+ "tx_pps": 374160,
+ "tx_pkts": 3723830,
+ "drop_percentage": 1.9847844826428704
+ },
+ {
+ "rx_pps": 187080.0,
+ "rx_pkts": 1859483,
+ "time_ms": 1646292884943,
+ "drop_pct": 0,
+ "total_tx_pps": 185948,
+ "tx_pps": 187080,
+ "tx_pkts": 1859483,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 280617.78649908,
+ "rx_pkts": 2789062,
+ "time_ms": 1646292897503,
+ "drop_pct": 22,
+ "total_tx_pps": 278908,
+ "tx_pps": 280620,
+ "tx_pkts": 2789084,
+ "drop_percentage": 0.0007887894376791807
+ },
+ {
+ "rx_pps": 327295.7202511058,
+ "rx_pkts": 3252831,
+ "time_ms": 1646292910003,
+ "drop_pct": 937,
+ "total_tx_pps": 325376,
+ "tx_pps": 327390,
+ "tx_pkts": 3253768,
+ "drop_percentage": 0.028797381989127683
+ },
+ {
+ "rx_pps": 303993.8263549052,
+ "rx_pkts": 3021548,
+ "time_ms": 1646292922504,
+ "drop_pct": 121,
+ "total_tx_pps": 302166,
+ "tx_pps": 304006,
+ "tx_pkts": 3021669,
+ "drop_percentage": 0.004004409483633052
+ },
+ {
+ "rx_pps": 291422.317994849,
+ "rx_pkts": 2896594,
+ "time_ms": 1646292935071,
+ "drop_pct": 8843,
+ "total_tx_pps": 290543,
+ "tx_pps": 292312,
+ "tx_pkts": 2905437,
+ "drop_percentage": 0.3043604111877146
+ },
+ {
+ "rx_pps": 286463.38417718763,
+ "rx_pkts": 2847306,
+ "time_ms": 1646292947570,
+ "drop_pct": 26,
+ "total_tx_pps": 284733,
+ "tx_pps": 286466,
+ "tx_pkts": 2847332,
+ "ndr_pps": 143233,
+ "drop_percentage": 0.0009131355247649378
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "e7ae74dbcfeb4aaf8774388598c054af"
+ },
+ "synthesis": {
+ "avg_delay_usec": 460.00053735004246,
+ "total_tx_rate": 284733
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.intensive",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1280-fc_100k-rate_ndr-2.json",
+ "frame_sizes": [
+ "1280"
+ ],
+ "rate": "ndr",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc6_intensive"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-03 07:40:43",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "3fddc9f03eab4c30982c44200d95ef6f",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "1280"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1280-fc_100k-rate_ndr-2.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "1280"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2504,
+ 2515
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc6_intensive",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.intensive",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1280-fc_100k-rate_ndr-2.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "1280": {
+ "ndr": {
+ "load_percent_per_direction": 4.98046875,
+ "timestamp_sec": 1646293386.7455893,
+ "stats": {
+ "total_tx_rate": 237983,
+ "overall": {
+ "rx_pkts": 2379828,
+ "drop_percentage": 0.0002941380389816941,
+ "drop_pct": 7,
+ "max_delay_usec": 9438,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 2379835,
+ "avg_delay_usec": 386.4999609215456,
+ "min_delay_usec": 33,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1189917,
+ "min_delay_usec": 33,
+ "drop_pct": 0,
+ "max_delay_usec": 9438,
+ "tx_pkts": 1189918,
+ "avg_delay_usec": 371,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 1189911,
+ "min_delay_usec": 38,
+ "drop_pct": 7,
+ "max_delay_usec": 3960,
+ "tx_pkts": 1189917,
+ "avg_delay_usec": 402,
+ "drop_percentage": 0.000588276325155452
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 2475023200.0,
+ "theoretical_tx_rate_pps": 4807692.307692308
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 9.9609375,
+ "duration_sec": 10.0,
+ "l2frame_size": "1280",
+ "rate_pps": 239444,
+ "rate_bps": 2490234374.0,
+ "time_taken_sec": 137.611346244812
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 358534.3786509994,
+ "rx_pkts": 3500830,
+ "time_ms": 1646293261625,
+ "drop_pct": 43442820,
+ "total_tx_pps": 4694365,
+ "tx_pps": 4807692,
+ "tx_pkts": 46943650,
+ "drop_percentage": 92.54248444677822
+ },
+ {
+ "rx_pps": 334304.0766214427,
+ "rx_pkts": 3322481,
+ "time_ms": 1646293274141,
+ "drop_pct": 20568142,
+ "total_tx_pps": 2389062,
+ "tx_pps": 2403846,
+ "tx_pkts": 23890623,
+ "drop_percentage": 86.09294952249675
+ },
+ {
+ "rx_pps": 116658.3609443631,
+ "rx_pkts": 1159526,
+ "time_ms": 1646293286673,
+ "drop_pct": 10786980,
+ "total_tx_pps": 1194650,
+ "tx_pps": 1201922,
+ "tx_pkts": 11946506,
+ "drop_percentage": 90.29401567286703
+ },
+ {
+ "rx_pps": 285569.6450320203,
+ "rx_pkts": 2838420,
+ "time_ms": 1646293299173,
+ "drop_pct": 3134823,
+ "total_tx_pps": 597324,
+ "tx_pps": 600960,
+ "tx_pkts": 5973243,
+ "drop_percentage": 52.48108941826074
+ },
+ {
+ "rx_pps": 300333.21198330424,
+ "rx_pkts": 2985163,
+ "time_ms": 1646293311671,
+ "drop_pct": 1459,
+ "total_tx_pps": 298662,
+ "tx_pps": 300480,
+ "tx_pkts": 2986622,
+ "drop_percentage": 0.04885117701537054
+ },
+ {
+ "rx_pps": 150240.0,
+ "rx_pkts": 1493236,
+ "time_ms": 1646293324172,
+ "drop_pct": 0,
+ "total_tx_pps": 149323,
+ "tx_pps": 150240,
+ "tx_pkts": 1493236,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 225358.89330561867,
+ "rx_pkts": 2239957,
+ "time_ms": 1646293336698,
+ "drop_pct": 11,
+ "total_tx_pps": 223996,
+ "tx_pps": 225360,
+ "tx_pkts": 2239968,
+ "drop_percentage": 0.0004910784439777711
+ },
+ {
+ "rx_pps": 262884.3287803163,
+ "rx_pkts": 2616225,
+ "time_ms": 1646293349210,
+ "drop_pct": 355,
+ "total_tx_pps": 261658,
+ "tx_pps": 262920,
+ "tx_pkts": 2616580,
+ "drop_percentage": 0.01356732834463307
+ },
+ {
+ "rx_pps": 244032.44942784897,
+ "rx_pkts": 2425563,
+ "time_ms": 1646293361717,
+ "drop_pct": 1069,
+ "total_tx_pps": 242663,
+ "tx_pps": 244140,
+ "tx_pkts": 2426632,
+ "drop_percentage": 0.04405282712829964
+ },
+ {
+ "rx_pps": 234750.0,
+ "rx_pkts": 2333417,
+ "time_ms": 1646293374219,
+ "drop_pct": 0,
+ "total_tx_pps": 233341,
+ "tx_pps": 234750,
+ "tx_pkts": 2333417,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 239443.29570411396,
+ "rx_pkts": 2379828,
+ "time_ms": 1646293386744,
+ "drop_pct": 7,
+ "total_tx_pps": 237983,
+ "tx_pps": 239444,
+ "tx_pkts": 2379835,
+ "ndr_pps": 119722,
+ "drop_percentage": 0.0002941380389816941
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "3fddc9f03eab4c30982c44200d95ef6f"
+ },
+ "synthesis": {
+ "avg_delay_usec": 386.4999609215456,
+ "total_tx_rate": 237983
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.intensive",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1518-fc_100k-rate_ndr-2.json",
+ "frame_sizes": [
+ "1518"
+ ],
+ "rate": "ndr",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc6_intensive"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-03 07:43:10",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "6b244dd30f8e44208781c5d3283e8419",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "1518"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1518-fc_100k-rate_ndr-0.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "1518"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2504,
+ 2515
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc6_intensive",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.intensive",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_1518-fc_100k-rate_ndr-0.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "1518": {
+ "ndr": {
+ "load_percent_per_direction": 6.4453125,
+ "timestamp_sec": 1646293533.4203305,
+ "stats": {
+ "total_tx_rate": 260333,
+ "overall": {
+ "rx_pkts": 2603335,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 7928,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 2603335,
+ "avg_delay_usec": 480.00050320070216,
+ "min_delay_usec": 36,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1301602,
+ "min_delay_usec": 36,
+ "drop_pct": 0,
+ "max_delay_usec": 4539,
+ "tx_pkts": 1301733,
+ "avg_delay_usec": 470,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 1301733,
+ "min_delay_usec": 36,
+ "drop_pct": 0,
+ "max_delay_usec": 7928,
+ "tx_pkts": 1301602,
+ "avg_delay_usec": 490,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 3203137232.0,
+ "theoretical_tx_rate_pps": 4063719.1157347206
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 12.890625,
+ "duration_sec": 10.0,
+ "l2frame_size": "1518",
+ "rate_pps": 261918,
+ "rate_bps": 3222656250.0,
+ "time_taken_sec": 137.72056579589844
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 325019.5206093959,
+ "rx_pkts": 3180144,
+ "time_ms": 1646293408209,
+ "drop_pct": 36581186,
+ "total_tx_pps": 3976133,
+ "tx_pps": 4063718,
+ "tx_pkts": 39761330,
+ "drop_percentage": 92.00191744089044
+ },
+ {
+ "rx_pps": 198729.36341220207,
+ "rx_pkts": 1975072,
+ "time_ms": 1646293420770,
+ "drop_pct": 18218551,
+ "total_tx_pps": 2019362,
+ "tx_pps": 2031858,
+ "tx_pkts": 20193623,
+ "drop_percentage": 90.21932815126834
+ },
+ {
+ "rx_pps": 157447.46203090227,
+ "rx_pkts": 1564792,
+ "time_ms": 1646293433286,
+ "drop_pct": 8532011,
+ "total_tx_pps": 1009680,
+ "tx_pps": 1015928,
+ "tx_pkts": 10096803,
+ "drop_percentage": 84.5021042799389
+ },
+ {
+ "rx_pps": 421490.29917415866,
+ "rx_pkts": 4189406,
+ "time_ms": 1646293445790,
+ "drop_pct": 859506,
+ "total_tx_pps": 504891,
+ "tx_pps": 507964,
+ "tx_pkts": 5048912,
+ "drop_percentage": 17.023588448362737
+ },
+ {
+ "rx_pps": 253980.49087030665,
+ "rx_pkts": 2524440,
+ "time_ms": 1646293458316,
+ "drop_pct": 15,
+ "total_tx_pps": 252445,
+ "tx_pps": 253982,
+ "tx_pkts": 2524455,
+ "drop_percentage": 0.0005941876563456271
+ },
+ {
+ "rx_pps": 378640.39427867,
+ "rx_pkts": 3763497,
+ "time_ms": 1646293470857,
+ "drop_pct": 23175,
+ "total_tx_pps": 378667,
+ "tx_pps": 380972,
+ "tx_pkts": 3786672,
+ "drop_percentage": 0.6120149830774886
+ },
+ {
+ "rx_pps": 316623.8329401139,
+ "rx_pkts": 3147085,
+ "time_ms": 1646293483376,
+ "drop_pct": 8490,
+ "total_tx_pps": 315557,
+ "tx_pps": 317478,
+ "tx_pkts": 3155575,
+ "drop_percentage": 0.26904763791068187
+ },
+ {
+ "rx_pps": 285718.32940377796,
+ "rx_pkts": 2839900,
+ "time_ms": 1646293495874,
+ "drop_pct": 116,
+ "total_tx_pps": 284001,
+ "tx_pps": 285730,
+ "tx_pkts": 2840016,
+ "drop_percentage": 0.004084484031075882
+ },
+ {
+ "rx_pps": 269556.6592924742,
+ "rx_pkts": 2678991,
+ "time_ms": 1646293508370,
+ "drop_pct": 2975,
+ "total_tx_pps": 268196,
+ "tx_pps": 269856,
+ "tx_pkts": 2681966,
+ "drop_percentage": 0.11092608929419687
+ },
+ {
+ "rx_pps": 261918.0,
+ "rx_pkts": 2603335,
+ "time_ms": 1646293520881,
+ "drop_pct": 0,
+ "total_tx_pps": 260333,
+ "tx_pps": 261918,
+ "tx_pkts": 2603335,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 265870.23458103574,
+ "rx_pkts": 2647670,
+ "time_ms": 1646293533419,
+ "drop_pct": 157,
+ "total_tx_pps": 264782,
+ "tx_pps": 265886,
+ "tx_pkts": 2647827,
+ "ndr_pps": 130959,
+ "drop_percentage": 0.005929390402016446
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "6b244dd30f8e44208781c5d3283e8419"
+ },
+ "synthesis": {
+ "avg_delay_usec": 480.00050320070216,
+ "total_tx_rate": 260333
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.intensive",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_IMIX-fc_100k-rate_ndr-2.json",
+ "frame_sizes": [
+ "IMIX"
+ ],
+ "rate": "ndr",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc6_intensive"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-03 07:52:56",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "62ffc44b9e274050bf0a7f2c90f3d093",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "IMIX"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_IMIX-fc_100k-rate_ndr-1.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "IMIX"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2504,
+ 2515
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc6_intensive",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.intensive",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_IMIX-fc_100k-rate_ndr-1.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "IMIX": {
+ "ndr": {
+ "load_percent_per_direction": 1.66015625,
+ "timestamp_sec": 1646294119.6733074,
+ "stats": {
+ "total_tx_rate": 270069,
+ "overall": {
+ "rx_pkts": 2700692,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 6573,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 2700692,
+ "avg_delay_usec": 496.00005109801486,
+ "min_delay_usec": 44,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1350277,
+ "min_delay_usec": 44,
+ "drop_pct": 0,
+ "max_delay_usec": 6573,
+ "tx_pkts": 1350415,
+ "avg_delay_usec": 495,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 1350415,
+ "min_delay_usec": 48,
+ "drop_pct": 0,
+ "max_delay_usec": 6316,
+ "tx_pkts": 1350277,
+ "avg_delay_usec": 497,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 824970772.0,
+ "theoretical_tx_rate_pps": 16368398.079441292
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 3.3203125,
+ "duration_sec": 10.0,
+ "l2frame_size": "IMIX",
+ "rate_pps": 271740,
+ "rate_bps": 830078124.0,
+ "time_taken_sec": 137.6471085548401
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 480448.74165268464,
+ "rx_pkts": 4165250,
+ "time_ms": 1646293994528,
+ "drop_pct": 137740564,
+ "total_tx_pps": 14190581,
+ "tx_pps": 16368398,
+ "tx_pkts": 141905814,
+ "warning": "WARNING: There is a significant difference between requested TX rate (16368398) and actual TX rate (14190581). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "drop_percentage": 97.06477847341759
+ },
+ {
+ "rx_pps": 416594.083252382,
+ "rx_pkts": 4140320,
+ "time_ms": 1646294007091,
+ "drop_pct": 77198326,
+ "total_tx_pps": 8133864,
+ "tx_pps": 8184198,
+ "tx_pkts": 81338646,
+ "drop_percentage": 94.90977511477139
+ },
+ {
+ "rx_pps": 415810.74435162114,
+ "rx_pkts": 4132536,
+ "time_ms": 1646294019594,
+ "drop_pct": 36536789,
+ "total_tx_pps": 4066932,
+ "tx_pps": 4092098,
+ "tx_pkts": 40669325,
+ "drop_percentage": 89.83869046265214
+ },
+ {
+ "rx_pps": 227881.88764751662,
+ "rx_pkts": 2269362,
+ "time_ms": 1646294032114,
+ "drop_pct": 18106209,
+ "total_tx_pps": 2037557,
+ "tx_pps": 2046048,
+ "tx_pkts": 20375571,
+ "drop_percentage": 88.86233912168646
+ },
+ {
+ "rx_pps": 184754.45000274904,
+ "rx_pkts": 1836183,
+ "time_ms": 1646294044616,
+ "drop_pct": 8331146,
+ "total_tx_pps": 1016732,
+ "tx_pps": 1023024,
+ "tx_pkts": 10167329,
+ "drop_percentage": 81.9403601476848
+ },
+ {
+ "rx_pps": 434731.4595380578,
+ "rx_pkts": 4320582,
+ "time_ms": 1646294057121,
+ "drop_pct": 763084,
+ "total_tx_pps": 508366,
+ "tx_pps": 511512,
+ "tx_pkts": 5083666,
+ "drop_percentage": 15.010506197692767
+ },
+ {
+ "rx_pps": 255756.0,
+ "rx_pkts": 2541835,
+ "time_ms": 1646294069630,
+ "drop_pct": 0,
+ "total_tx_pps": 254183,
+ "tx_pps": 255756,
+ "tx_pkts": 2541835,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 381383.3612061213,
+ "rx_pkts": 3790383,
+ "time_ms": 1646294082142,
+ "drop_pct": 22368,
+ "total_tx_pps": 381275,
+ "tx_pps": 383634,
+ "tx_pkts": 3812751,
+ "drop_percentage": 0.5866630157594871
+ },
+ {
+ "rx_pps": 319677.01936570305,
+ "rx_pkts": 3181590,
+ "time_ms": 1646294094664,
+ "drop_pct": 169,
+ "total_tx_pps": 318175,
+ "tx_pps": 319694,
+ "tx_pkts": 3181759,
+ "drop_percentage": 0.005311527365837576
+ },
+ {
+ "rx_pps": 286984.929988342,
+ "rx_pkts": 2852492,
+ "time_ms": 1646294107173,
+ "drop_pct": 7346,
+ "total_tx_pps": 285983,
+ "tx_pps": 287724,
+ "tx_pkts": 2859838,
+ "drop_percentage": 0.2568676967017013
+ },
+ {
+ "rx_pps": 271740.0,
+ "rx_pkts": 2700692,
+ "time_ms": 1646294119672,
+ "drop_pct": 0,
+ "total_tx_pps": 270069,
+ "tx_pps": 271740,
+ "tx_pkts": 2700692,
+ "ndr_pps": 135870,
+ "drop_percentage": 0.0
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "62ffc44b9e274050bf0a7f2c90f3d093"
+ },
+ "synthesis": {
+ "avg_delay_usec": 496.00005109801486,
+ "total_tx_rate": 270069
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.intensive",
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_9000-fc_100k-rate_ndr-2.json",
+ "frame_sizes": [
+ "9000"
+ ],
+ "rate": "ndr",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "user_label": "amical_tc6_intensive"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-03 08:02:44",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "917d50701d4e429dad9083ff419756ca",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "9000"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 0,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_9000-fc_100k-rate_ndr-2.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "9000"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2504,
+ 2515
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": false,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc6_intensive",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.intensive",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/characterization/nfvbench-throughput-fs_9000-fc_100k-rate_ndr-2.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/characterization/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "9000": {
+ "ndr": {
+ "load_percent_per_direction": 22.265625,
+ "timestamp_sec": 1646294707.7233596,
+ "stats": {
+ "total_tx_rate": 153337,
+ "overall": {
+ "rx_pkts": 1533368,
+ "drop_percentage": 0.00019564736779292163,
+ "drop_pct": 3,
+ "max_delay_usec": 18880,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 1533371,
+ "avg_delay_usec": 987.5007708521373,
+ "min_delay_usec": 54,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 766686,
+ "min_delay_usec": 54,
+ "drop_pct": 0,
+ "max_delay_usec": 18880,
+ "tx_pkts": 766685,
+ "avg_delay_usec": 1283,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 766682,
+ "min_delay_usec": 54,
+ "drop_pct": 3,
+ "max_delay_usec": 16438,
+ "tx_pkts": 766686,
+ "avg_delay_usec": 692,
+ "drop_percentage": 0.00039129448040005945
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 11064797920.0,
+ "theoretical_tx_rate_pps": 692904.6563192905
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 44.53125,
+ "duration_sec": 10.0,
+ "l2frame_size": "9000",
+ "rate_pps": 154278,
+ "rate_bps": 11132812500.0,
+ "time_taken_sec": 137.58272123336792
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 90494.832576641,
+ "rx_pkts": 898795,
+ "time_ms": 1646294582631,
+ "drop_pct": 5983130,
+ "total_tx_pps": 688192,
+ "tx_pps": 692904,
+ "tx_pkts": 6881925,
+ "drop_percentage": 86.93977339189253
+ },
+ {
+ "rx_pps": 140749.47686318654,
+ "rx_pkts": 1398839,
+ "time_ms": 1646294595149,
+ "drop_pct": 2044375,
+ "total_tx_pps": 344321,
+ "tx_pps": 346452,
+ "tx_pkts": 3443214,
+ "drop_percentage": 59.374032517293436
+ },
+ {
+ "rx_pps": 173212.0139973792,
+ "rx_pkts": 1721469,
+ "time_ms": 1646294607646,
+ "drop_pct": 139,
+ "total_tx_pps": 172160,
+ "tx_pps": 173226,
+ "tx_pkts": 1721608,
+ "drop_percentage": 0.008073847240486801
+ },
+ {
+ "rx_pps": 86612.0,
+ "rx_pkts": 860795,
+ "time_ms": 1646294620168,
+ "drop_pct": 0,
+ "total_tx_pps": 86079,
+ "tx_pps": 86612,
+ "tx_pkts": 860795,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 129918.0,
+ "rx_pkts": 1291191,
+ "time_ms": 1646294632678,
+ "drop_pct": 0,
+ "total_tx_pps": 129119,
+ "tx_pps": 129918,
+ "tx_pkts": 1291191,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 151570.89330603922,
+ "rx_pkts": 1506541,
+ "time_ms": 1646294645208,
+ "drop_pct": 11,
+ "total_tx_pps": 150655,
+ "tx_pps": 151572,
+ "tx_pkts": 1506552,
+ "drop_percentage": 0.0007301440640615127
+ },
+ {
+ "rx_pps": 162054.72678886072,
+ "rx_pkts": 1611232,
+ "time_ms": 1646294657720,
+ "drop_pct": 3413,
+ "total_tx_pps": 161464,
+ "tx_pps": 162398,
+ "tx_pkts": 1614645,
+ "drop_percentage": 0.2113777331859325
+ },
+ {
+ "rx_pps": 156960.74598503095,
+ "rx_pkts": 1560035,
+ "time_ms": 1646294670223,
+ "drop_pct": 251,
+ "total_tx_pps": 156028,
+ "tx_pps": 156986,
+ "tx_pkts": 1560286,
+ "drop_percentage": 0.016086794344113836
+ },
+ {
+ "rx_pps": 154277.69815915392,
+ "rx_pkts": 1533368,
+ "time_ms": 1646294682722,
+ "drop_pct": 3,
+ "total_tx_pps": 153337,
+ "tx_pps": 154278,
+ "tx_pkts": 1533371,
+ "drop_percentage": 0.0001956473677929216
+ },
+ {
+ "rx_pps": 155550.0040687643,
+ "rx_pkts": 1546092,
+ "time_ms": 1646294695224,
+ "drop_pct": 815,
+ "total_tx_pps": 154690,
+ "tx_pps": 155632,
+ "tx_pkts": 1546907,
+ "drop_percentage": 0.05268577878308134
+ },
+ {
+ "rx_pps": 153977.28138199815,
+ "rx_pkts": 1530304,
+ "time_ms": 1646294707722,
+ "drop_pct": 9727,
+ "total_tx_pps": 154003,
+ "tx_pps": 154956,
+ "tx_pkts": 1540031,
+ "ndr_pps": 77139,
+ "drop_percentage": 0.6316106623827702
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "917d50701d4e429dad9083ff419756ca"
+ },
+ "synthesis": {
+ "avg_delay_usec": 987.5007708521373,
+ "total_tx_rate": 153337
+ }
+ }
+ ]
+ },
+ "fail_tests": 0,
+ "total_tests": 1,
+ "pass_tests": 1
+ }
+ }
+ ]
+}
diff --git a/test/ut_behave_tests/test_data/project=nfvbench&case=non-regression&criteria=PASS&page=1.json b/test/ut_behave_tests/test_data/project=nfvbench&case=non-regression&criteria=PASS&page=1.json
new file mode 100644
index 0000000..6af5404
--- /dev/null
+++ b/test/ut_behave_tests/test_data/project=nfvbench&case=non-regression&criteria=PASS&page=1.json
@@ -0,0 +1,8124 @@
+{
+ "pagination": {
+ "current_page": 1,
+ "total_pages": 1
+ },
+ "results": [
+ {
+ "project_name": "nfvbench",
+ "scenario": "basic",
+ "stop_date": "2022-03-30 06:48:26",
+ "case_name": "non-regression",
+ "build_tag": "RPDOUC5V2ARA",
+ "version": "unknown",
+ "pod_name": "AMICAL",
+ "criteria": "PASS",
+ "installer": "unknown",
+ "_id": "6243fd3bc0d88e001ca15689",
+ "start_date": "2022-03-30 06:15:40",
+ "details": {
+ "tests": [
+ {
+ "status": "passed",
+ "elements": [
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size -- @1.1 Frame sizes",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010585784912109375,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "64 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "64"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.799003601074219e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 0.00010967254638671875,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.608268737792969e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 10.035421133041382,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 449.58826899528503,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00013637542724609375,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0003008842468261719,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "verify throughput result is in same range as the previous result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:14",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:333"
+ },
+ "result": {
+ "duration": 0.02466893196105957,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "verify throughput result is in same range as the characterization result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:15",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:409"
+ },
+ "result": {
+ "duration": 0.6800198554992676,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:19",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size -- @1.2 Frame sizes",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00011587142944335938,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "768 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "768"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 0.00011491775512695312,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.5367431640625e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.322166442871094e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.008649349212646484,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 439.46048855781555,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00012159347534179688,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.0003330707550048828,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "verify throughput result is in same range as the previous result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:14",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:333"
+ },
+ "result": {
+ "duration": 0.023331880569458008,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "verify throughput result is in same range as the characterization result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:15",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:409"
+ },
+ "result": {
+ "duration": 0.690040111541748,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:20",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size -- @1.3 Frame sizes",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010156631469726562,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "1518 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "1518"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.584426879882812e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.489059448242188e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 9.632110595703125e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.008922100067138672,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 441.5395607948303,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00012230873107910156,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.00034332275390625,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "verify throughput result is in same range as the previous result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:14",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:333"
+ },
+ "result": {
+ "duration": 0.022931814193725586,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "verify throughput result is in same range as the characterization result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:15",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:409"
+ },
+ "result": {
+ "duration": 0.5106196403503418,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:21",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a NDR test for a defined frame size -- @1.4 Frame sizes",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "throughput"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:6",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010037422180175781,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "9000 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:7",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "9000"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.560585021972656e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:8",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.465217590332031e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "ndr rate",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:9",
+ "match": {
+ "arguments": [
+ {
+ "name": "rate",
+ "value": "ndr"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:119"
+ },
+ "result": {
+ "duration": 0.000102996826171875,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:10",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.00852203369140625,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "3 runs are started and waiting for maximum result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:11",
+ "match": {
+ "arguments": [
+ {
+ "name": "repeat",
+ "value": 3,
+ "original": "3"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 439.5287985801697,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:12",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00012087821960449219,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "extract offered rate result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:13",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:327"
+ },
+ "result": {
+ "duration": 0.000316619873046875,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "verify throughput result is in same range as the previous result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:14",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:333"
+ },
+ "result": {
+ "duration": 0.02317047119140625,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "verify throughput result is in same range as the characterization result",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:15",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:409"
+ },
+ "result": {
+ "duration": 0.6906359195709229,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:22",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a latency test for a defined frame size and throughput percentage -- @1.1 Frame sizes and throughput percentages",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "latency"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:27",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.0001735687255859375,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "64 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:28",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "64"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.799003601074219e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:29",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.751319885253906e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "packet rate equal to 70% of max throughput of last characterization",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:30",
+ "match": {
+ "arguments": [
+ {
+ "name": "percentage",
+ "value": "70%"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:137"
+ },
+ "result": {
+ "duration": 3.042870044708252,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:31",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.00884389877319336,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "run is started and waiting for result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:32",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 20.07615303993225,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:33",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00012111663818359375,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "verify latency result is lower than 1000 microseconds",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:34",
+ "match": {
+ "arguments": [
+ {
+ "name": "max_avg_latency_usec",
+ "value": 1000.0,
+ "original": "1000"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:351"
+ },
+ "result": {
+ "duration": 0.0001919269561767578,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:38",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a latency test for a defined frame size and throughput percentage -- @1.2 Frame sizes and throughput percentages",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "latency"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:27",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010085105895996094,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "64 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:28",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "64"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 0.00011873245239257812,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:29",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.560585021972656e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "packet rate equal to 90% of max throughput of last characterization",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:30",
+ "match": {
+ "arguments": [
+ {
+ "name": "percentage",
+ "value": "90%"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:137"
+ },
+ "result": {
+ "duration": 2.90081524848938,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:31",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.008797883987426758,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "run is started and waiting for result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:32",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 20.11899709701538,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:33",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00013256072998046875,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "verify latency result is lower than 1000 microseconds",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:34",
+ "match": {
+ "arguments": [
+ {
+ "name": "max_avg_latency_usec",
+ "value": 1000.0,
+ "original": "1000"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:351"
+ },
+ "result": {
+ "duration": 0.0001926422119140625,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:39",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a latency test for a defined frame size and throughput percentage -- @1.3 Frame sizes and throughput percentages",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "latency"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:27",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.822845458984375e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "768 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:28",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "768"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 0.00011396408081054688,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:29",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.775161743164062e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "packet rate equal to 70% of max throughput of last characterization",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:30",
+ "match": {
+ "arguments": [
+ {
+ "name": "percentage",
+ "value": "70%"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:137"
+ },
+ "result": {
+ "duration": 3.1052234172821045,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:31",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.008736610412597656,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "run is started and waiting for result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:32",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 20.07916784286499,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:33",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00011897087097167969,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "verify latency result is lower than 1000 microseconds",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:34",
+ "match": {
+ "arguments": [
+ {
+ "name": "max_avg_latency_usec",
+ "value": 1000.0,
+ "original": "1000"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:351"
+ },
+ "result": {
+ "duration": 0.0002129077911376953,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:40",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a latency test for a defined frame size and throughput percentage -- @1.4 Frame sizes and throughput percentages",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "latency"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:27",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010061264038085938,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "768 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:28",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "768"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.560585021972656e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:29",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.632110595703125e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "packet rate equal to 90% of max throughput of last characterization",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:30",
+ "match": {
+ "arguments": [
+ {
+ "name": "percentage",
+ "value": "90%"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:137"
+ },
+ "result": {
+ "duration": 2.9584743976593018,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:31",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.008613348007202148,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "run is started and waiting for result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:32",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 20.074522256851196,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:33",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.0001220703125,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "verify latency result is lower than 1000 microseconds",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:34",
+ "match": {
+ "arguments": [
+ {
+ "name": "max_avg_latency_usec",
+ "value": 1000.0,
+ "original": "1000"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:351"
+ },
+ "result": {
+ "duration": 0.00019407272338867188,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:41",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a latency test for a defined frame size and throughput percentage -- @1.5 Frame sizes and throughput percentages",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "latency"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:27",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010061264038085938,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "1518 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:28",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "1518"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.703636169433594e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:29",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 0.00011610984802246094,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "packet rate equal to 70% of max throughput of last characterization",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:30",
+ "match": {
+ "arguments": [
+ {
+ "name": "percentage",
+ "value": "70%"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:137"
+ },
+ "result": {
+ "duration": 3.118863821029663,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:31",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.008606433868408203,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "run is started and waiting for result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:32",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 20.080474376678467,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:33",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00012254714965820312,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "verify latency result is lower than 1000 microseconds",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:34",
+ "match": {
+ "arguments": [
+ {
+ "name": "max_avg_latency_usec",
+ "value": 1000.0,
+ "original": "1000"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:351"
+ },
+ "result": {
+ "duration": 0.00019216537475585938,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:42",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a latency test for a defined frame size and throughput percentage -- @1.6 Frame sizes and throughput percentages",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "latency"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:27",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010013580322265625,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "1518 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:28",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "1518"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.942054748535156e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:29",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.703636169433594e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "packet rate equal to 90% of max throughput of last characterization",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:30",
+ "match": {
+ "arguments": [
+ {
+ "name": "percentage",
+ "value": "90%"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:137"
+ },
+ "result": {
+ "duration": 2.9169235229492188,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:31",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.008793830871582031,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "run is started and waiting for result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:32",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 18.160871744155884,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:33",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00012159347534179688,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "verify latency result is lower than 1000 microseconds",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:34",
+ "match": {
+ "arguments": [
+ {
+ "name": "max_avg_latency_usec",
+ "value": 1000.0,
+ "original": "1000"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:351"
+ },
+ "result": {
+ "duration": 0.00019097328186035156,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:43",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a latency test for a defined frame size and throughput percentage -- @1.7 Frame sizes and throughput percentages",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "latency"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:27",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 9.965896606445312e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "9000 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:28",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "9000"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.918212890625e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:29",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.655952453613281e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "packet rate equal to 70% of max throughput of last characterization",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:30",
+ "match": {
+ "arguments": [
+ {
+ "name": "percentage",
+ "value": "70%"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:137"
+ },
+ "result": {
+ "duration": 2.906872272491455,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:31",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.008602142333984375,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "run is started and waiting for result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:32",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 20.075267791748047,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:33",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00011920928955078125,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "verify latency result is lower than 1000 microseconds",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:34",
+ "match": {
+ "arguments": [
+ {
+ "name": "max_avg_latency_usec",
+ "value": 1000.0,
+ "original": "1000"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:351"
+ },
+ "result": {
+ "duration": 0.00020933151245117188,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:44",
+ "type": "scenario"
+ },
+ {
+ "status": "passed",
+ "name": "Run a latency test for a defined frame size and throughput percentage -- @1.8 Frame sizes and throughput percentages",
+ "keyword": "Scenario Outline",
+ "tags": [
+ "latency"
+ ],
+ "steps": [
+ {
+ "name": "10 sec run duration",
+ "keyword": "Given",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:27",
+ "match": {
+ "arguments": [
+ {
+ "name": "duration",
+ "value": "10"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:124"
+ },
+ "result": {
+ "duration": 0.00010251998901367188,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "9000 frame size",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:28",
+ "match": {
+ "arguments": [
+ {
+ "name": "frame_size",
+ "value": "9000"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:109"
+ },
+ "result": {
+ "duration": 9.72747802734375e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "100k flow count",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:29",
+ "match": {
+ "arguments": [
+ {
+ "name": "flow_count",
+ "value": "100k"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:114"
+ },
+ "result": {
+ "duration": 9.465217590332031e-05,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "packet rate equal to 90% of max throughput of last characterization",
+ "keyword": "And",
+ "step_type": "given",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:30",
+ "match": {
+ "arguments": [
+ {
+ "name": "percentage",
+ "value": "90%"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:137"
+ },
+ "result": {
+ "duration": 2.828930139541626,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "NFVbench API is ready",
+ "keyword": "When",
+ "step_type": "when",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:31",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:210"
+ },
+ "result": {
+ "duration": 0.008794546127319336,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "run is started and waiting for result",
+ "keyword": "Then",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:32",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:264"
+ },
+ "result": {
+ "duration": 20.077053785324097,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "push result to database",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:33",
+ "match": {
+ "arguments": [],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:426"
+ },
+ "result": {
+ "duration": 0.00011849403381347656,
+ "status": "passed"
+ }
+ },
+ {
+ "name": "verify latency result is lower than 1000 microseconds",
+ "keyword": "And",
+ "step_type": "then",
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:34",
+ "match": {
+ "arguments": [
+ {
+ "name": "max_avg_latency_usec",
+ "value": 1000.0,
+ "original": "1000"
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/steps/steps.py:351"
+ },
+ "result": {
+ "duration": 0.0002167224884033203,
+ "status": "passed"
+ }
+ }
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:45",
+ "type": "scenario"
+ }
+ ],
+ "name": "non-regression",
+ "keyword": "Feature",
+ "tags": [
+ "non-regression"
+ ],
+ "location": "../../opt/nfvbench/behave_tests/features/non-regression.feature:2"
+ }
+ ],
+ "skip_tests": 0,
+ "links": [
+ "http://172.20.73.203:8181/RPDOUC5V2ARA/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_non-regression-run-41/xtesting.log",
+ "http://172.20.73.203:8181/RPDOUC5V2ARA/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_non-regression-run-41/non-regression/nfvbench-throughput-fs_768-fc_100k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/RPDOUC5V2ARA/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_non-regression-run-41/non-regression/nfvbench-throughput-fs_1518-fc_100k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/RPDOUC5V2ARA/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_non-regression-run-41/non-regression/nfvbench-throughput-fs_9000-fc_100k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/RPDOUC5V2ARA/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_non-regression-run-41/non-regression/output.html",
+ "http://172.20.73.203:8181/RPDOUC5V2ARA/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_non-regression-run-41/non-regression/nfvbench-throughput-fs_9000-fc_100k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/RPDOUC5V2ARA/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_non-regression-run-41/non-regression/nfvbench-throughput-fs_64-fc_100k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/RPDOUC5V2ARA/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_non-regression-run-41/non-regression/nfvbench-latency-fs_64-fc_100k-rate_70%.json",
+ "http://172.20.73.203:8181/RPDOUC5V2ARA/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_non-regression-run-41/non-regression/nfvbench-throughput-fs_64-fc_100k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/RPDOUC5V2ARA/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_non-regression-run-41/non-regression/nfvbench-throughput-fs_1518-fc_100k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/RPDOUC5V2ARA/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_non-regression-run-41/non-regression/behave_tests.log",
+ "http://172.20.73.203:8181/RPDOUC5V2ARA/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_non-regression-run-41/non-regression/nfvbench-latency-fs_9000-fc_100k-rate_70%.json",
+ "http://172.20.73.203:8181/RPDOUC5V2ARA/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_non-regression-run-41/non-regression/nfvbench-throughput-fs_768-fc_100k-rate_ndr-1.json",
+ "http://172.20.73.203:8181/RPDOUC5V2ARA/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_non-regression-run-41/non-regression/campaign_result.json",
+ "http://172.20.73.203:8181/RPDOUC5V2ARA/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_non-regression-run-41/non-regression/nfvbench-latency-fs_768-fc_100k-rate_90%.json",
+ "http://172.20.73.203:8181/RPDOUC5V2ARA/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_non-regression-run-41/non-regression/nfvbench-throughput-fs_64-fc_100k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/RPDOUC5V2ARA/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_non-regression-run-41/non-regression/nfvbench-latency-fs_1518-fc_100k-rate_90%.json",
+ "http://172.20.73.203:8181/RPDOUC5V2ARA/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_non-regression-run-41/non-regression/nfvbench-throughput-fs_9000-fc_100k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/RPDOUC5V2ARA/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_non-regression-run-41/non-regression/nfvbench-throughput-fs_1518-fc_100k-rate_ndr-0.json",
+ "http://172.20.73.203:8181/RPDOUC5V2ARA/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_non-regression-run-41/non-regression/nfvbench-throughput-fs_768-fc_100k-rate_ndr-2.json",
+ "http://172.20.73.203:8181/RPDOUC5V2ARA/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_non-regression-run-41/non-regression/nfvbench-latency-fs_64-fc_100k-rate_90%.json",
+ "http://172.20.73.203:8181/RPDOUC5V2ARA/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_non-regression-run-41/non-regression/TESTS-non-regression.xml",
+ "http://172.20.73.203:8181/RPDOUC5V2ARA/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_non-regression-run-41/non-regression/nfvbench-latency-fs_768-fc_100k-rate_70%.json",
+ "http://172.20.73.203:8181/RPDOUC5V2ARA/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_non-regression-run-41/non-regression/nfvbench.log",
+ "http://172.20.73.203:8181/RPDOUC5V2ARA/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_non-regression-run-41/non-regression/nfvbench-latency-fs_9000-fc_100k-rate_90%.json",
+ "http://172.20.73.203:8181/RPDOUC5V2ARA/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_non-regression-run-41/non-regression/nfvbench-latency-fs_1518-fc_100k-rate_70%.json",
+ "http://172.20.73.203:8181/RPDOUC5V2ARA/nfvbench-amical-e2e-basic-_-nfvbench-launcher-latest-devel-nfvbench_e2e_only_test_non-regression-run-41/non-regression/output.json"
+ ],
+ "results": {
+ "latency": [
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/non-regression/nfvbench-latency-fs_64-fc_100k-rate_70%.json",
+ "frame_sizes": [
+ "64"
+ ],
+ "rate": "70%",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/non-regression/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-30 06:45:29",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "75ed0568a3cf49929e20d9d4c44a23a0",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "404398pps",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "64"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": false,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/non-regression/nfvbench-latency-fs_64-fc_100k-rate_70%.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": true,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "64"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2512,
+ 2517
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/non-regression/nfvbench-latency-fs_64-fc_100k-rate_70%.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/non-regression/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "64": {
+ "run_config": {
+ "direction-forward": {
+ "rx": {
+ "rate_percent": 0.5414414208000001,
+ "rate_pps": 201429,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 135360355
+ },
+ "tx": {
+ "rate_percent": 0.5414497536,
+ "rate_pps": 201432,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 135362438
+ },
+ "orig": {
+ "rate_percent": 0.543510912,
+ "rate_pps": 202199,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 135877728
+ }
+ },
+ "direction-total": {
+ "rx": {
+ "rate_percent": 1.082844672,
+ "rate_pps": 402843.0,
+ "rate_bps": 270711167.0
+ },
+ "tx": {
+ "rate_percent": 1.0828995072,
+ "rate_pps": 402864.0,
+ "rate_bps": 270724876.0
+ },
+ "orig": {
+ "rate_percent": 1.087021824,
+ "rate_pps": 404398.0,
+ "rate_bps": 271755456.0
+ }
+ },
+ "direction-reverse": {
+ "rx": {
+ "rate_percent": 0.5414032511999999,
+ "rate_pps": 201414,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 135350812
+ },
+ "tx": {
+ "rate_percent": 0.5414497536,
+ "rate_pps": 201432,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 135362438
+ },
+ "orig": {
+ "rate_percent": 0.543510912,
+ "rate_pps": 202199,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 135877728
+ }
+ }
+ },
+ "packet_path_stats": {
+ "Forward": {
+ "interfaces": [
+ "TRex.TX.p0",
+ "TRex.RX.p1"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 9937,
+ 9937
+ ],
+ "lat_max_usec": 4057,
+ "lat_avg_usec": 78,
+ "lat_min_usec": 31,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ },
+ "Reverse": {
+ "interfaces": [
+ "TRex.TX.p1",
+ "TRex.RX.p0"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 9937,
+ 9937
+ ],
+ "lat_max_usec": 5209,
+ "lat_avg_usec": 76,
+ "lat_min_usec": 32,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ }
+ },
+ "stats": {
+ "total_tx_rate": 402864,
+ "overall": {
+ "drop_rate_percent": 0.005063738568113737,
+ "rx": {
+ "dropped_pkts": 204,
+ "pkt_bit_rate": 109803088.0,
+ "pkt_rate": 201839.0,
+ "max_delay_usec": 5209,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "avg_delay_usec": 76.99996475062306,
+ "total_pkt_bytes": 273933920,
+ "total_pkts": 4028440,
+ "min_delay_usec": 31
+ },
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg=",
+ "tx": {
+ "total_pkt_bytes": 273947792,
+ "total_pkts": 4028644,
+ "pkt_bit_rate": 109803752.0,
+ "pkt_rate": 201840.5
+ }
+ },
+ "1": {
+ "drop_rate_percent": 0.0015389793687404496,
+ "rx": {
+ "dropped_pkts": 31,
+ "pkt_bit_rate": 109811680,
+ "pkt_rate": 201855,
+ "max_delay_usec": 5209,
+ "total_pkt_bytes": 136971788,
+ "avg_delay_usec": 76,
+ "total_pkts": 2014291,
+ "min_delay_usec": 32
+ },
+ "tx": {
+ "total_pkt_bytes": 136973896,
+ "total_pkts": 2014322,
+ "pkt_bit_rate": 109806936,
+ "pkt_rate": 201846
+ }
+ },
+ "0": {
+ "drop_rate_percent": 0.008588497767487026,
+ "rx": {
+ "dropped_pkts": 173,
+ "pkt_bit_rate": 109794496,
+ "pkt_rate": 201823,
+ "max_delay_usec": 4057,
+ "total_pkt_bytes": 136962132,
+ "avg_delay_usec": 78,
+ "total_pkts": 2014149,
+ "min_delay_usec": 31
+ },
+ "tx": {
+ "total_pkt_bytes": 136973896,
+ "total_pkts": 2014322,
+ "pkt_bit_rate": 109800568,
+ "pkt_rate": 201835
+ }
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 270724608.0,
+ "theoretical_tx_rate_pps": 74404761.90476191
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "75ed0568a3cf49929e20d9d4c44a23a0"
+ },
+ "synthesis": {
+ "avg_delay_usec": 76.99996475062306,
+ "total_tx_rate": 402864
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/non-regression/nfvbench-latency-fs_64-fc_100k-rate_90%.json",
+ "frame_sizes": [
+ "64"
+ ],
+ "rate": "90%",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/non-regression/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-30 06:45:52",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "79137fde73644833ac7d36e6523616ef",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "519940pps",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "64"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": false,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/non-regression/nfvbench-latency-fs_64-fc_100k-rate_90%.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": true,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "64"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2512,
+ 2517
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/non-regression/nfvbench-latency-fs_64-fc_100k-rate_90%.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/non-regression/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "64": {
+ "run_config": {
+ "direction-forward": {
+ "rx": {
+ "rate_percent": 0.6964035456000001,
+ "rate_pps": 259078,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 174100886
+ },
+ "tx": {
+ "rate_percent": 0.6964035456000001,
+ "rate_pps": 259078,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 174100886
+ },
+ "orig": {
+ "rate_percent": 0.69879936,
+ "rate_pps": 259970,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 174699840
+ }
+ },
+ "direction-total": {
+ "rx": {
+ "rate_percent": 1.3929753599999999,
+ "rate_pps": 518219.0,
+ "rate_bps": 348243839.0
+ },
+ "tx": {
+ "rate_percent": 1.3929753599999999,
+ "rate_pps": 518219.0,
+ "rate_bps": 348243839.0
+ },
+ "orig": {
+ "rate_percent": 1.39759872,
+ "rate_pps": 519940.0,
+ "rate_bps": 349399680.0
+ }
+ },
+ "direction-reverse": {
+ "rx": {
+ "rate_percent": 0.6965718143999999,
+ "rate_pps": 259141,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 174142953
+ },
+ "tx": {
+ "rate_percent": 0.6965718143999999,
+ "rate_pps": 259141,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 174142953
+ },
+ "orig": {
+ "rate_percent": 0.69879936,
+ "rate_pps": 259970,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 174699840
+ }
+ }
+ },
+ "packet_path_stats": {
+ "Forward": {
+ "interfaces": [
+ "TRex.TX.p0",
+ "TRex.RX.p1"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 9943,
+ 9943
+ ],
+ "lat_max_usec": 769,
+ "lat_avg_usec": 108,
+ "lat_min_usec": 36,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ },
+ "Reverse": {
+ "interfaces": [
+ "TRex.TX.p1",
+ "TRex.RX.p0"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 9948,
+ 9948
+ ],
+ "lat_max_usec": 6239,
+ "lat_avg_usec": 113,
+ "lat_min_usec": 34,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ }
+ },
+ "stats": {
+ "total_tx_rate": 518220,
+ "overall": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 141244984.0,
+ "pkt_rate": 259641.0,
+ "max_delay_usec": 6239,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "avg_delay_usec": 110.49969800470842,
+ "total_pkt_bytes": 352389600,
+ "total_pkts": 5182200,
+ "min_delay_usec": 34
+ },
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg=",
+ "tx": {
+ "total_pkt_bytes": 352389600,
+ "total_pkts": 5182200,
+ "pkt_bit_rate": 141253832.0,
+ "pkt_rate": 259656.5
+ }
+ },
+ "1": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 141247136,
+ "pkt_rate": 259645,
+ "max_delay_usec": 6239,
+ "total_pkt_bytes": 176173516,
+ "avg_delay_usec": 113,
+ "total_pkts": 2590787,
+ "min_delay_usec": 34
+ },
+ "tx": {
+ "total_pkt_bytes": 176216084,
+ "total_pkts": 2591413,
+ "pkt_bit_rate": 141261952,
+ "pkt_rate": 259671
+ }
+ },
+ "0": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 141242832,
+ "pkt_rate": 259637,
+ "max_delay_usec": 769,
+ "total_pkt_bytes": 176216084,
+ "avg_delay_usec": 108,
+ "total_pkts": 2591413,
+ "min_delay_usec": 36
+ },
+ "tx": {
+ "total_pkt_bytes": 176173516,
+ "total_pkts": 2590787,
+ "pkt_bit_rate": 141245712,
+ "pkt_rate": 259642
+ }
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 348243840.0,
+ "theoretical_tx_rate_pps": 74404761.90476191
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "79137fde73644833ac7d36e6523616ef"
+ },
+ "synthesis": {
+ "avg_delay_usec": 110.49969800470842,
+ "total_tx_rate": 518220
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/non-regression/nfvbench-latency-fs_768-fc_100k-rate_70%.json",
+ "frame_sizes": [
+ "768"
+ ],
+ "rate": "70%",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/non-regression/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-30 06:46:15",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "018ded21d6884356b306acecf1de061e",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "323313pps",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "768"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": false,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/non-regression/nfvbench-latency-fs_768-fc_100k-rate_70%.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": true,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "768"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2512,
+ 2517
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/non-regression/nfvbench-latency-fs_768-fc_100k-rate_70%.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/non-regression/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "768": {
+ "run_config": {
+ "direction-forward": {
+ "rx": {
+ "rate_percent": 4.060615692799999,
+ "rate_pps": 161033,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 1015153923
+ },
+ "tx": {
+ "rate_percent": 4.060615692799999,
+ "rate_pps": 161033,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 1015153923
+ },
+ "orig": {
+ "rate_percent": 4.076330304,
+ "rate_pps": 161656,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 1019082576
+ }
+ },
+ "direction-total": {
+ "rx": {
+ "rate_percent": 8.1214759808,
+ "rate_pps": 322076.0,
+ "rate_bps": 2030368995.0
+ },
+ "tx": {
+ "rate_percent": 8.1214759808,
+ "rate_pps": 322076.0,
+ "rate_bps": 2030368995.0
+ },
+ "orig": {
+ "rate_percent": 8.152660608,
+ "rate_pps": 323312.0,
+ "rate_bps": 2038165152.0
+ }
+ },
+ "direction-reverse": {
+ "rx": {
+ "rate_percent": 4.060860288,
+ "rate_pps": 161043,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 1015215072
+ },
+ "tx": {
+ "rate_percent": 4.060860288,
+ "rate_pps": 161043,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 1015215072
+ },
+ "orig": {
+ "rate_percent": 4.076330304,
+ "rate_pps": 161656,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 1019082576
+ }
+ }
+ },
+ "packet_path_stats": {
+ "Forward": {
+ "interfaces": [
+ "TRex.TX.p0",
+ "TRex.RX.p1"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 9936,
+ 9936
+ ],
+ "lat_max_usec": 372,
+ "lat_avg_usec": 145,
+ "lat_min_usec": 54,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ },
+ "Reverse": {
+ "interfaces": [
+ "TRex.TX.p1",
+ "TRex.RX.p0"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 9937,
+ 9937
+ ],
+ "lat_max_usec": 4837,
+ "lat_avg_usec": 145,
+ "lat_min_usec": 60,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ }
+ },
+ "stats": {
+ "total_tx_rate": 322076,
+ "overall": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 997521760.0,
+ "pkt_rate": 161515.5,
+ "max_delay_usec": 4837,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "avg_delay_usec": 145.0,
+ "total_pkt_bytes": 2486429036,
+ "total_pkts": 3220763,
+ "min_delay_usec": 54
+ },
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg=",
+ "tx": {
+ "total_pkt_bytes": 2486429036,
+ "total_pkts": 3220763,
+ "pkt_bit_rate": 997554144.0,
+ "pkt_rate": 161520.5
+ }
+ },
+ "1": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 997543808,
+ "pkt_rate": 161519,
+ "max_delay_usec": 4837,
+ "total_pkt_bytes": 1243177076,
+ "avg_delay_usec": 145,
+ "total_pkts": 1610333,
+ "min_delay_usec": 60
+ },
+ "tx": {
+ "total_pkt_bytes": 1243251960,
+ "total_pkts": 1610430,
+ "pkt_bit_rate": 997507712,
+ "pkt_rate": 161513
+ }
+ },
+ "0": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 997499712,
+ "pkt_rate": 161512,
+ "max_delay_usec": 372,
+ "total_pkt_bytes": 1243251960,
+ "avg_delay_usec": 145,
+ "total_pkts": 1610430,
+ "min_delay_usec": 54
+ },
+ "tx": {
+ "total_pkt_bytes": 1243177076,
+ "total_pkts": 1610333,
+ "pkt_bit_rate": 997600576,
+ "pkt_rate": 161528
+ }
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 2030367104.0,
+ "theoretical_tx_rate_pps": 7931472.081218274
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "018ded21d6884356b306acecf1de061e"
+ },
+ "synthesis": {
+ "avg_delay_usec": 145.0,
+ "total_tx_rate": 322076
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/non-regression/nfvbench-latency-fs_768-fc_100k-rate_90%.json",
+ "frame_sizes": [
+ "768"
+ ],
+ "rate": "90%",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/non-regression/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-30 06:46:38",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "ad05bbb2c1a747e2a90c860566eea05b",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "415688pps",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "768"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": false,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/non-regression/nfvbench-latency-fs_768-fc_100k-rate_90%.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": true,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "768"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2512,
+ 2517
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/non-regression/nfvbench-latency-fs_768-fc_100k-rate_90%.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/non-regression/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "768": {
+ "run_config": {
+ "direction-forward": {
+ "rx": {
+ "rate_percent": 5.2271154176,
+ "rate_pps": 207293,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 1306778854
+ },
+ "tx": {
+ "rate_percent": 5.2271154176,
+ "rate_pps": 207293,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 1306778854
+ },
+ "orig": {
+ "rate_percent": 5.240994304,
+ "rate_pps": 207844,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 1310248576
+ }
+ },
+ "direction-total": {
+ "rx": {
+ "rate_percent": 10.454548556800003,
+ "rate_pps": 414599.0,
+ "rate_bps": 2613637138.0
+ },
+ "tx": {
+ "rate_percent": 10.454548556800003,
+ "rate_pps": 414599.0,
+ "rate_bps": 2613637138.0
+ },
+ "orig": {
+ "rate_percent": 10.481988608,
+ "rate_pps": 415688.0,
+ "rate_bps": 2620497152.0
+ }
+ },
+ "direction-reverse": {
+ "rx": {
+ "rate_percent": 5.227433139200001,
+ "rate_pps": 207306,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 1306858284
+ },
+ "tx": {
+ "rate_percent": 5.227433139200001,
+ "rate_pps": 207306,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 1306858284
+ },
+ "orig": {
+ "rate_percent": 5.240994304,
+ "rate_pps": 207844,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 1310248576
+ }
+ }
+ },
+ "packet_path_stats": {
+ "Forward": {
+ "interfaces": [
+ "TRex.TX.p0",
+ "TRex.RX.p1"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 9956,
+ 9956
+ ],
+ "lat_max_usec": 213,
+ "lat_avg_usec": 79,
+ "lat_min_usec": 33,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ },
+ "Reverse": {
+ "interfaces": [
+ "TRex.TX.p1",
+ "TRex.RX.p0"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 9958,
+ 9958
+ ],
+ "lat_max_usec": 3751,
+ "lat_avg_usec": 80,
+ "lat_min_usec": 32,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ }
+ },
+ "stats": {
+ "total_tx_rate": 414599,
+ "overall": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 1277907840.0,
+ "pkt_rate": 206914.5,
+ "max_delay_usec": 3751,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "avg_delay_usec": 79.49998480462364,
+ "total_pkt_bytes": 3200710456,
+ "total_pkts": 4145998,
+ "min_delay_usec": 32
+ },
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg=",
+ "tx": {
+ "total_pkt_bytes": 3200710456,
+ "total_pkts": 4145998,
+ "pkt_bit_rate": 1279049856.0,
+ "pkt_rate": 207099.5
+ }
+ },
+ "1": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 1275807616,
+ "pkt_rate": 206575,
+ "max_delay_usec": 3751,
+ "total_pkt_bytes": 1600306592,
+ "avg_delay_usec": 80,
+ "total_pkts": 2072936,
+ "min_delay_usec": 32
+ },
+ "tx": {
+ "total_pkt_bytes": 1600403864,
+ "total_pkts": 2073062,
+ "pkt_bit_rate": 1279909120,
+ "pkt_rate": 207239
+ }
+ },
+ "0": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 1280008064,
+ "pkt_rate": 207254,
+ "max_delay_usec": 213,
+ "total_pkt_bytes": 1600403864,
+ "avg_delay_usec": 79,
+ "total_pkts": 2073062,
+ "min_delay_usec": 33
+ },
+ "tx": {
+ "total_pkt_bytes": 1600306592,
+ "total_pkts": 2072936,
+ "pkt_bit_rate": 1278190592,
+ "pkt_rate": 206960
+ }
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 2613632096.0,
+ "theoretical_tx_rate_pps": 7931472.081218274
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "ad05bbb2c1a747e2a90c860566eea05b"
+ },
+ "synthesis": {
+ "avg_delay_usec": 79.49998480462364,
+ "total_tx_rate": 414599
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/non-regression/nfvbench-latency-fs_1518-fc_100k-rate_70%.json",
+ "frame_sizes": [
+ "1518"
+ ],
+ "rate": "70%",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/non-regression/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-30 06:47:01",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "cc041b8004d74c0a8d8594f9b1cb7094",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "353370pps",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "1518"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": false,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/non-regression/nfvbench-latency-fs_1518-fc_100k-rate_70%.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": true,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "1518"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2512,
+ 2517
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/non-regression/nfvbench-latency-fs_1518-fc_100k-rate_70%.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/non-regression/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "1518": {
+ "run_config": {
+ "direction-forward": {
+ "rx": {
+ "rate_percent": 8.6593927872,
+ "rate_pps": 175946,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 2164848196
+ },
+ "tx": {
+ "rate_percent": 8.662744396799999,
+ "rate_pps": 176014,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 2165686099
+ },
+ "orig": {
+ "rate_percent": 8.69572896,
+ "rate_pps": 176685,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 2173932240
+ }
+ },
+ "direction-total": {
+ "rx": {
+ "rate_percent": 17.321684396800002,
+ "rate_pps": 351951.0,
+ "rate_bps": 4330421098.0
+ },
+ "tx": {
+ "rate_percent": 17.326015404799996,
+ "rate_pps": 352039.0,
+ "rate_bps": 4331503851.0
+ },
+ "orig": {
+ "rate_percent": 17.39145792,
+ "rate_pps": 353370.0,
+ "rate_bps": 4347864480.0
+ }
+ },
+ "direction-reverse": {
+ "rx": {
+ "rate_percent": 8.6622916096,
+ "rate_pps": 176005,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 2165572902
+ },
+ "tx": {
+ "rate_percent": 8.663271007999999,
+ "rate_pps": 176025,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 2165817752
+ },
+ "orig": {
+ "rate_percent": 8.69572896,
+ "rate_pps": 176685,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 2173932240
+ }
+ }
+ },
+ "packet_path_stats": {
+ "Forward": {
+ "interfaces": [
+ "TRex.TX.p0",
+ "TRex.RX.p1"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 9938,
+ "-4 (-0.0402%)"
+ ],
+ "lat_max_usec": 2443,
+ "lat_avg_usec": 112,
+ "lat_min_usec": 36,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ },
+ "Reverse": {
+ "interfaces": [
+ "TRex.TX.p1",
+ "TRex.RX.p0"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 9939,
+ 9939
+ ],
+ "lat_max_usec": 12936,
+ "lat_avg_usec": 116,
+ "lat_min_usec": 38,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ }
+ },
+ "stats": {
+ "total_tx_rate": 352040,
+ "overall": {
+ "drop_rate_percent": 0.02499713811174459,
+ "rx": {
+ "dropped_pkts": 880,
+ "pkt_bit_rate": 2018299584.0,
+ "pkt_rate": 165760.0,
+ "max_delay_usec": 12936,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "avg_delay_usec": 113.99966529555283,
+ "total_pkt_bytes": 5356714006,
+ "total_pkts": 3519523,
+ "min_delay_usec": 36
+ },
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg=",
+ "tx": {
+ "total_pkt_bytes": 5358053366,
+ "total_pkts": 3520403,
+ "pkt_bit_rate": 2018089472.0,
+ "pkt_rate": 165742.5
+ }
+ },
+ "1": {
+ "drop_rate_percent": 0.03868757651590252,
+ "rx": {
+ "dropped_pkts": 681,
+ "pkt_bit_rate": 2007099776,
+ "pkt_rate": 164840,
+ "max_delay_usec": 12936,
+ "total_pkt_bytes": 2677908774,
+ "avg_delay_usec": 116,
+ "total_pkts": 1759467,
+ "min_delay_usec": 38
+ },
+ "tx": {
+ "total_pkt_bytes": 2679108110,
+ "total_pkts": 1760255,
+ "pkt_bit_rate": 2018672768,
+ "pkt_rate": 165791
+ }
+ },
+ "0": {
+ "drop_rate_percent": 0.011305867461145312,
+ "rx": {
+ "dropped_pkts": 199,
+ "pkt_bit_rate": 2029499392,
+ "pkt_rate": 166680,
+ "max_delay_usec": 2443,
+ "total_pkt_bytes": 2678805232,
+ "avg_delay_usec": 112,
+ "total_pkts": 1760056,
+ "min_delay_usec": 36
+ },
+ "tx": {
+ "total_pkt_bytes": 2678945256,
+ "total_pkts": 1760148,
+ "pkt_bit_rate": 2017506176,
+ "pkt_rate": 165694
+ }
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 4331500160.0,
+ "theoretical_tx_rate_pps": 4063719.1157347206
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "cc041b8004d74c0a8d8594f9b1cb7094"
+ },
+ "synthesis": {
+ "avg_delay_usec": 113.99966529555283,
+ "total_tx_rate": 352040
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/non-regression/nfvbench-latency-fs_1518-fc_100k-rate_90%.json",
+ "frame_sizes": [
+ "1518"
+ ],
+ "rate": "90%",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/non-regression/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-30 06:47:24",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "c882cf33b2e045618c1b76b924573708",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "454333pps",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "1518"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": false,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/non-regression/nfvbench-latency-fs_1518-fc_100k-rate_90%.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": true,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "1518"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2512,
+ 2517
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/non-regression/nfvbench-latency-fs_1518-fc_100k-rate_90%.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/non-regression/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "1518": {
+ "run_config": {
+ "direction-forward": {
+ "rx": {
+ "rate_percent": 11.1361683008,
+ "rate_pps": 226271,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 2784042075
+ },
+ "tx": {
+ "rate_percent": 11.137846566399999,
+ "rate_pps": 226305,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 2784461641
+ },
+ "orig": {
+ "rate_percent": 11.180226464,
+ "rate_pps": 227166,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 2795056616
+ }
+ },
+ "direction-total": {
+ "rx": {
+ "rate_percent": 22.2746891264,
+ "rate_pps": 452590.0,
+ "rate_bps": 5568672281.0
+ },
+ "tx": {
+ "rate_percent": 22.276367391999997,
+ "rate_pps": 452624.0,
+ "rate_bps": 5569091847.0
+ },
+ "orig": {
+ "rate_percent": 22.360452928,
+ "rate_pps": 454332.0,
+ "rate_bps": 5590113232.0
+ }
+ },
+ "direction-reverse": {
+ "rx": {
+ "rate_percent": 11.1385208256,
+ "rate_pps": 226319,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 2784630206
+ },
+ "tx": {
+ "rate_percent": 11.1385208256,
+ "rate_pps": 226319,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 2784630206
+ },
+ "orig": {
+ "rate_percent": 11.180226464,
+ "rate_pps": 227166,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 2795056616
+ }
+ }
+ },
+ "packet_path_stats": {
+ "Forward": {
+ "interfaces": [
+ "TRex.TX.p0",
+ "TRex.RX.p1"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 9937,
+ "-1 (-0.0101%)"
+ ],
+ "lat_max_usec": 198,
+ "lat_avg_usec": 90,
+ "lat_min_usec": 37,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ },
+ "Reverse": {
+ "interfaces": [
+ "TRex.TX.p1",
+ "TRex.RX.p0"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 9938,
+ 9938
+ ],
+ "lat_max_usec": 5322,
+ "lat_avg_usec": 93,
+ "lat_min_usec": 35,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ }
+ },
+ "stats": {
+ "total_tx_rate": 452624,
+ "overall": {
+ "drop_rate_percent": 0.007533838755966591,
+ "rx": {
+ "dropped_pkts": 341,
+ "pkt_bit_rate": 2761265024.0,
+ "pkt_rate": 226779.0,
+ "max_delay_usec": 5322,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "avg_delay_usec": 91.4998415786106,
+ "total_pkt_bytes": 6888425888,
+ "total_pkts": 4525904,
+ "min_delay_usec": 35
+ },
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg=",
+ "tx": {
+ "total_pkt_bytes": 6888944890,
+ "total_pkts": 4526245,
+ "pkt_bit_rate": 2761356672.0,
+ "pkt_rate": 226786.5
+ }
+ },
+ "1": {
+ "drop_rate_percent": 0.015067221458551222,
+ "rx": {
+ "dropped_pkts": 341,
+ "pkt_bit_rate": 2761269504,
+ "pkt_rate": 226779,
+ "max_delay_usec": 5322,
+ "total_pkt_bytes": 3443849186,
+ "avg_delay_usec": 93,
+ "total_pkts": 2262713,
+ "min_delay_usec": 35
+ },
+ "tx": {
+ "total_pkt_bytes": 3444576702,
+ "total_pkts": 2263191,
+ "pkt_bit_rate": 2761352192,
+ "pkt_rate": 226786
+ }
+ },
+ "0": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 2761260544,
+ "pkt_rate": 226779,
+ "max_delay_usec": 198,
+ "total_pkt_bytes": 3444576702,
+ "avg_delay_usec": 90,
+ "total_pkts": 2263191,
+ "min_delay_usec": 37
+ },
+ "tx": {
+ "total_pkt_bytes": 3444368188,
+ "total_pkts": 2263054,
+ "pkt_bit_rate": 2761361152,
+ "pkt_rate": 226787
+ }
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 5569085696.0,
+ "theoretical_tx_rate_pps": 4063719.1157347206
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "c882cf33b2e045618c1b76b924573708"
+ },
+ "synthesis": {
+ "avg_delay_usec": 91.4998415786106,
+ "total_tx_rate": 452624
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/non-regression/nfvbench-latency-fs_9000-fc_100k-rate_70%.json",
+ "frame_sizes": [
+ "9000"
+ ],
+ "rate": "70%",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/non-regression/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-30 06:47:45",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "c78cef8058b74f9885f125b3bf43f1da",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "183574pps",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "9000"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": false,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/non-regression/nfvbench-latency-fs_9000-fc_100k-rate_70%.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": true,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "9000"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2512,
+ 2517
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/non-regression/nfvbench-latency-fs_9000-fc_100k-rate_70%.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/non-regression/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "9000": {
+ "run_config": {
+ "direction-forward": {
+ "rx": {
+ "rate_percent": 26.390961344,
+ "rate_pps": 91432,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 6597740336
+ },
+ "tx": {
+ "rate_percent": 26.390961344,
+ "rate_pps": 91432,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 6597740336
+ },
+ "orig": {
+ "rate_percent": 26.493399680000003,
+ "rate_pps": 91787,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 6623349920
+ }
+ },
+ "direction-total": {
+ "rx": {
+ "rate_percent": 52.783539071999996,
+ "rate_pps": 182869.0,
+ "rate_bps": 13195884768.0
+ },
+ "tx": {
+ "rate_percent": 52.783539071999996,
+ "rate_pps": 182869.0,
+ "rate_bps": 13195884768.0
+ },
+ "orig": {
+ "rate_percent": 52.986799360000006,
+ "rate_pps": 183574.0,
+ "rate_bps": 13246699840.0
+ }
+ },
+ "direction-reverse": {
+ "rx": {
+ "rate_percent": 26.392577728,
+ "rate_pps": 91437,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 6598144432
+ },
+ "tx": {
+ "rate_percent": 26.392577728,
+ "rate_pps": 91437,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 6598144432
+ },
+ "orig": {
+ "rate_percent": 26.493399680000003,
+ "rate_pps": 91787,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 6623349920
+ }
+ }
+ },
+ "packet_path_stats": {
+ "Forward": {
+ "interfaces": [
+ "TRex.TX.p0",
+ "TRex.RX.p1"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 9937,
+ 9937
+ ],
+ "lat_max_usec": 4143,
+ "lat_avg_usec": 306,
+ "lat_min_usec": 66,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ },
+ "Reverse": {
+ "interfaces": [
+ "TRex.TX.p1",
+ "TRex.RX.p0"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 9938,
+ 9938
+ ],
+ "lat_max_usec": 6704,
+ "lat_avg_usec": 322,
+ "lat_min_usec": 65,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ }
+ },
+ "stats": {
+ "total_tx_rate": 182869,
+ "overall": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 6603213824.0,
+ "pkt_rate": 91670.5,
+ "max_delay_usec": 6704,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "avg_delay_usec": 313.9997550169574,
+ "total_pkt_bytes": 16465596792,
+ "total_pkts": 1828698,
+ "min_delay_usec": 65
+ },
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg=",
+ "tx": {
+ "total_pkt_bytes": 16465596792,
+ "total_pkts": 1828698,
+ "pkt_bit_rate": 6603036928.0,
+ "pkt_rate": 91668.5
+ }
+ },
+ "1": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 6603323392,
+ "pkt_rate": 91672,
+ "max_delay_usec": 6704,
+ "total_pkt_bytes": 8232546284,
+ "avg_delay_usec": 322,
+ "total_pkts": 914321,
+ "min_delay_usec": 65
+ },
+ "tx": {
+ "total_pkt_bytes": 8233050508,
+ "total_pkts": 914377,
+ "pkt_bit_rate": 6603299840,
+ "pkt_rate": 91672
+ }
+ },
+ "0": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 6603104256,
+ "pkt_rate": 91669,
+ "max_delay_usec": 4143,
+ "total_pkt_bytes": 8233050508,
+ "avg_delay_usec": 306,
+ "total_pkts": 914377,
+ "min_delay_usec": 66
+ },
+ "tx": {
+ "total_pkt_bytes": 8232546284,
+ "total_pkts": 914321,
+ "pkt_bit_rate": 6602774016,
+ "pkt_rate": 91665
+ }
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 13195827040.0,
+ "theoretical_tx_rate_pps": 692904.6563192905
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "c78cef8058b74f9885f125b3bf43f1da"
+ },
+ "synthesis": {
+ "avg_delay_usec": 313.9997550169574,
+ "total_tx_rate": 182869
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/non-regression/nfvbench-latency-fs_9000-fc_100k-rate_90%.json",
+ "frame_sizes": [
+ "9000"
+ ],
+ "rate": "90%",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/non-regression/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-30 06:48:08",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "4a306639173f4526b3a835abe92c709d",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "236023pps",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "9000"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": false,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/non-regression/nfvbench-latency-fs_9000-fc_100k-rate_90%.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": true,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "9000"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2512,
+ 2517
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/non-regression/nfvbench-latency-fs_9000-fc_100k-rate_90%.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/non-regression/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "9000": {
+ "run_config": {
+ "direction-forward": {
+ "rx": {
+ "rate_percent": 33.933413184,
+ "rate_pps": 117563,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 8483353296
+ },
+ "tx": {
+ "rate_percent": 33.933413184,
+ "rate_pps": 117563,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 8483353296
+ },
+ "orig": {
+ "rate_percent": 34.062839360000005,
+ "rate_pps": 118011,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 8515709840
+ }
+ },
+ "direction-total": {
+ "rx": {
+ "rate_percent": 67.868846848,
+ "rate_pps": 235133.0,
+ "rate_bps": 16967211712.0
+ },
+ "tx": {
+ "rate_percent": 67.868846848,
+ "rate_pps": 235133.0,
+ "rate_bps": 16967211712.0
+ },
+ "orig": {
+ "rate_percent": 68.12567872000001,
+ "rate_pps": 236022.0,
+ "rate_bps": 17031419680.0
+ }
+ },
+ "direction-reverse": {
+ "rx": {
+ "rate_percent": 33.935433663999994,
+ "rate_pps": 117570,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 8483858416
+ },
+ "tx": {
+ "rate_percent": 33.935433663999994,
+ "rate_pps": 117570,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 8483858416
+ },
+ "orig": {
+ "rate_percent": 34.062839360000005,
+ "rate_pps": 118011,
+ "initial_rate_type": "rate_pps",
+ "rate_bps": 8515709840
+ }
+ }
+ },
+ "packet_path_stats": {
+ "Forward": {
+ "interfaces": [
+ "TRex.TX.p0",
+ "TRex.RX.p1"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 9938,
+ 9938
+ ],
+ "lat_max_usec": 3154,
+ "lat_avg_usec": 503,
+ "lat_min_usec": 113,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ },
+ "Reverse": {
+ "interfaces": [
+ "TRex.TX.p1",
+ "TRex.RX.p0"
+ ],
+ "chains": {
+ "0": {
+ "packets": [
+ 9938,
+ 9938
+ ],
+ "lat_max_usec": 6539,
+ "lat_avg_usec": 390,
+ "lat_min_usec": 114,
+ "hdrh": "HISTFAAAAB54nJNpmSzMwMDAyAABzFAawp8xrcH+A1QAAE9IBCo=",
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ }
+ }
+ }
+ }
+ },
+ "stats": {
+ "total_tx_rate": 235133,
+ "overall": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 8493890560.0,
+ "pkt_rate": 117917.5,
+ "max_delay_usec": 6539,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "avg_delay_usec": 446.5016820253371,
+ "total_pkt_bytes": 21171393328,
+ "total_pkts": 2351332,
+ "min_delay_usec": 113
+ },
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg=",
+ "tx": {
+ "total_pkt_bytes": 21171393328,
+ "total_pkts": 2351332,
+ "pkt_bit_rate": 8494719232.0,
+ "pkt_rate": 117929.0
+ }
+ },
+ "1": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 8494009856,
+ "pkt_rate": 117919,
+ "max_delay_usec": 6539,
+ "total_pkt_bytes": 10585381524,
+ "avg_delay_usec": 390,
+ "total_pkts": 1175631,
+ "min_delay_usec": 114
+ },
+ "tx": {
+ "total_pkt_bytes": 10586011804,
+ "total_pkts": 1175701,
+ "pkt_bit_rate": 8494438400,
+ "pkt_rate": 117925
+ }
+ },
+ "0": {
+ "drop_rate_percent": 0.0,
+ "rx": {
+ "dropped_pkts": 0,
+ "pkt_bit_rate": 8493771264,
+ "pkt_rate": 117916,
+ "max_delay_usec": 3154,
+ "total_pkt_bytes": 10586011804,
+ "avg_delay_usec": 503,
+ "total_pkts": 1175701,
+ "min_delay_usec": 113
+ },
+ "tx": {
+ "total_pkt_bytes": 10585381524,
+ "total_pkts": 1175631,
+ "pkt_bit_rate": 8495000064,
+ "pkt_rate": 117933
+ }
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 16967197280.0,
+ "theoretical_tx_rate_pps": 692904.6563192905
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "4a306639173f4526b3a835abe92c709d"
+ },
+ "synthesis": {
+ "avg_delay_usec": 446.5016820253371,
+ "total_tx_rate": 235133
+ }
+ }
+ ],
+ "throughput": [
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/non-regression/nfvbench-throughput-fs_64-fc_100k-rate_ndr-2.json",
+ "frame_sizes": [
+ "64"
+ ],
+ "rate": "ndr",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/non-regression/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-30 06:20:56",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "38389ab0308e45b1a8769cbbff9ef2b2",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "64"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/non-regression/nfvbench-throughput-fs_64-fc_100k-rate_ndr-2.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "64"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2512,
+ 2517
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/non-regression/nfvbench-throughput-fs_64-fc_100k-rate_ndr-2.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/non-regression/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "64": {
+ "ndr": {
+ "load_percent_per_direction": 0.78125,
+ "timestamp_sec": 1648621399.3161063,
+ "stats": {
+ "total_tx_rate": 577711,
+ "overall": {
+ "rx_pkts": 5777112,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 518,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 5777112,
+ "avg_delay_usec": 108.49992470286192,
+ "min_delay_usec": 29,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 2888411,
+ "min_delay_usec": 29,
+ "drop_pct": 0,
+ "max_delay_usec": 263,
+ "tx_pkts": 2888701,
+ "avg_delay_usec": 110,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 2888701,
+ "min_delay_usec": 31,
+ "drop_pct": 0,
+ "max_delay_usec": 518,
+ "tx_pkts": 2888411,
+ "avg_delay_usec": 107,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 388221792.0,
+ "theoretical_tx_rate_pps": 74404761.90476191
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 1.5625,
+ "duration_sec": 10.0,
+ "l2frame_size": "64",
+ "rate_pps": 581286,
+ "rate_bps": 390625000.0,
+ "time_taken_sec": 137.66617798805237
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 1275063.5983414354,
+ "rx_pkts": 7250590,
+ "time_ms": 1648621274137,
+ "drop_pct": 415848626,
+ "total_tx_pps": 42309921,
+ "tx_pps": 74404760,
+ "tx_pkts": 423099216,
+ "warning": "WARNING: There is a significant difference between requested TX rate (74404760) and actual TX rate (42309921). The traffic generator may not have sufficient CPU to achieve the requested TX rate.",
+ "drop_percentage": 98.28631447995876
+ },
+ {
+ "rx_pps": 1826535.749662823,
+ "rx_pkts": 18151199,
+ "time_ms": 1648621286633,
+ "drop_pct": 351547452,
+ "total_tx_pps": 36969865,
+ "tx_pps": 37202380,
+ "tx_pkts": 369698651,
+ "drop_percentage": 95.09027177921729
+ },
+ {
+ "rx_pps": 1361841.6268887145,
+ "rx_pkts": 13533302,
+ "time_ms": 1648621299138,
+ "drop_pct": 171316035,
+ "total_tx_pps": 18484933,
+ "tx_pps": 18601190,
+ "tx_pkts": 184849337,
+ "drop_percentage": 92.678739226422
+ },
+ {
+ "rx_pps": 774061.5668982501,
+ "rx_pkts": 7703074,
+ "time_ms": 1648621311660,
+ "drop_pct": 84851791,
+ "total_tx_pps": 9255486,
+ "tx_pps": 9300594,
+ "tx_pkts": 92554865,
+ "drop_percentage": 91.67728892479072
+ },
+ {
+ "rx_pps": 792412.735924586,
+ "rx_pkts": 7874998,
+ "time_ms": 1648621324177,
+ "drop_pct": 38339645,
+ "total_tx_pps": 4621464,
+ "tx_pps": 4650296,
+ "tx_pkts": 46214643,
+ "drop_percentage": 82.9599505940141
+ },
+ {
+ "rx_pps": 1930194.9831442875,
+ "rx_pkts": 19183245,
+ "time_ms": 1648621336700,
+ "drop_pct": 3925241,
+ "total_tx_pps": 2310848,
+ "tx_pps": 2325148,
+ "tx_pkts": 23108486,
+ "drop_percentage": 16.986145262826824
+ },
+ {
+ "rx_pps": 1161679.8008522235,
+ "rx_pkts": 11545357,
+ "time_ms": 1648621349196,
+ "drop_pct": 8887,
+ "total_tx_pps": 1155424,
+ "tx_pps": 1162574,
+ "tx_pkts": 11554244,
+ "drop_percentage": 0.07691546067401726
+ },
+ {
+ "rx_pps": 581286.0,
+ "rx_pkts": 5777112,
+ "time_ms": 1648621361693,
+ "drop_pct": 0,
+ "total_tx_pps": 577711,
+ "tx_pps": 581286,
+ "tx_pkts": 5777112,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 871250.6221139021,
+ "rx_pkts": 8658928,
+ "time_ms": 1648621374223,
+ "drop_pct": 6752,
+ "total_tx_pps": 866568,
+ "tx_pps": 871930,
+ "tx_pkts": 8665680,
+ "drop_percentage": 0.07791656280868899
+ },
+ {
+ "rx_pps": 726098.0996491228,
+ "rx_pkts": 7223952,
+ "time_ms": 1648621386809,
+ "drop_pct": 5073,
+ "total_tx_pps": 722902,
+ "tx_pps": 726608,
+ "tx_pkts": 7229025,
+ "drop_percentage": 0.07017543859649122
+ },
+ {
+ "rx_pps": 653878.4654382298,
+ "rx_pkts": 6497920,
+ "time_ms": 1648621399315,
+ "drop_pct": 691,
+ "total_tx_pps": 649861,
+ "tx_pps": 653948,
+ "tx_pkts": 6498611,
+ "ndr_pps": 290643,
+ "drop_percentage": 0.010633041429930181
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "38389ab0308e45b1a8769cbbff9ef2b2"
+ },
+ "synthesis": {
+ "avg_delay_usec": 108.49992470286192,
+ "total_tx_rate": 577711
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/non-regression/nfvbench-throughput-fs_768-fc_100k-rate_ndr-2.json",
+ "frame_sizes": [
+ "768"
+ ],
+ "rate": "ndr",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/non-regression/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-30 06:25:50",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "42bb799d87974e05a9480378a9074174",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "768"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/non-regression/nfvbench-throughput-fs_768-fc_100k-rate_ndr-1.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "768"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2512,
+ 2517
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/non-regression/nfvbench-throughput-fs_768-fc_100k-rate_ndr-1.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/non-regression/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "768": {
+ "ndr": {
+ "load_percent_per_direction": 6.640625,
+ "timestamp_sec": 1648621693.1637194,
+ "stats": {
+ "total_tx_rate": 523406,
+ "overall": {
+ "rx_pkts": 5234062,
+ "drop_percentage": 1.910561642074236e-05,
+ "drop_pct": 1,
+ "max_delay_usec": 318,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 5234063,
+ "avg_delay_usec": 106.50022525526063,
+ "min_delay_usec": 32,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 2616900,
+ "min_delay_usec": 32,
+ "drop_pct": 0,
+ "max_delay_usec": 273,
+ "tx_pkts": 2617163,
+ "avg_delay_usec": 102,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 2617162,
+ "min_delay_usec": 32,
+ "drop_pct": 1,
+ "max_delay_usec": 318,
+ "tx_pkts": 2616900,
+ "avg_delay_usec": 111,
+ "drop_percentage": 3.821315296725133e-05
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 3299551424.0,
+ "theoretical_tx_rate_pps": 7931472.081218274
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 13.28125,
+ "duration_sec": 10.0,
+ "l2frame_size": "768",
+ "rate_pps": 526698,
+ "rate_bps": 3320312500.0,
+ "time_taken_sec": 137.53268241882324
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 1419133.1802420425,
+ "rx_pkts": 13668934,
+ "time_ms": 1648621568128,
+ "drop_pct": 62726128,
+ "total_tx_pps": 7639506,
+ "tx_pps": 7931472,
+ "tx_pkts": 76395062,
+ "drop_percentage": 82.10756868028983
+ },
+ {
+ "rx_pps": 1499465.703933795,
+ "rx_pkts": 14900941,
+ "time_ms": 1648621580622,
+ "drop_pct": 24508562,
+ "total_tx_pps": 3940950,
+ "tx_pps": 3965736,
+ "tx_pkts": 39409503,
+ "drop_percentage": 62.189472422425624
+ },
+ {
+ "rx_pps": 1746588.0892852556,
+ "rx_pkts": 17356722,
+ "time_ms": 1648621593115,
+ "drop_pct": 2348032,
+ "total_tx_pps": 1970475,
+ "tx_pps": 1982868,
+ "tx_pkts": 19704754,
+ "drop_percentage": 11.916068579186526
+ },
+ {
+ "rx_pps": 991022.0667012471,
+ "rx_pkts": 9849275,
+ "time_ms": 1648621605613,
+ "drop_pct": 4094,
+ "total_tx_pps": 985336,
+ "tx_pps": 991434,
+ "tx_pkts": 9853369,
+ "drop_percentage": 0.0415492406708812
+ },
+ {
+ "rx_pps": 495716.0,
+ "rx_pkts": 4926180,
+ "time_ms": 1648621618110,
+ "drop_pct": 0,
+ "total_tx_pps": 492618,
+ "tx_pps": 495716,
+ "tx_pkts": 4926180,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 743159.3083655083,
+ "rx_pkts": 7385149,
+ "time_ms": 1648621630627,
+ "drop_pct": 4121,
+ "total_tx_pps": 738927,
+ "tx_pps": 743574,
+ "tx_pkts": 7389270,
+ "drop_percentage": 0.05577005577005577
+ },
+ {
+ "rx_pps": 619263.0064059279,
+ "rx_pkts": 6153928,
+ "time_ms": 1648621643143,
+ "drop_pct": 3806,
+ "total_tx_pps": 615773,
+ "tx_pps": 619646,
+ "tx_pkts": 6157734,
+ "drop_percentage": 0.06180845096589102
+ },
+ {
+ "rx_pps": 557594.6752731256,
+ "rx_pkts": 5541656,
+ "time_ms": 1648621655641,
+ "drop_pct": 848,
+ "total_tx_pps": 554250,
+ "tx_pps": 557680,
+ "tx_pkts": 5542504,
+ "drop_percentage": 0.015299943852092844
+ },
+ {
+ "rx_pps": 526697.8993711005,
+ "rx_pkts": 5234062,
+ "time_ms": 1648621668148,
+ "drop_pct": 1,
+ "total_tx_pps": 523406,
+ "tx_pps": 526698,
+ "tx_pkts": 5234063,
+ "drop_percentage": 1.9105616420742355e-05
+ },
+ {
+ "rx_pps": 542111.0142915759,
+ "rx_pkts": 5387774,
+ "time_ms": 1648621680646,
+ "drop_pct": 785,
+ "total_tx_pps": 538855,
+ "tx_pps": 542190,
+ "tx_pkts": 5388559,
+ "drop_percentage": 0.01456790210518248
+ },
+ {
+ "rx_pps": 534373.8016685186,
+ "rx_pkts": 5321028,
+ "time_ms": 1648621693162,
+ "drop_pct": 699,
+ "total_tx_pps": 532172,
+ "tx_pps": 534444,
+ "tx_pkts": 5321727,
+ "ndr_pps": 263349,
+ "drop_percentage": 0.013134833861263458
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "42bb799d87974e05a9480378a9074174"
+ },
+ "synthesis": {
+ "avg_delay_usec": 106.50022525526063,
+ "total_tx_rate": 523406
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/non-regression/nfvbench-throughput-fs_1518-fc_100k-rate_ndr-2.json",
+ "frame_sizes": [
+ "1518"
+ ],
+ "rate": "ndr",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/non-regression/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-30 06:30:43",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "53e4dda50a71447681903270ab2e5a3e",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "1518"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/non-regression/nfvbench-throughput-fs_1518-fc_100k-rate_ndr-0.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "1518"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2512,
+ 2517
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/non-regression/nfvbench-throughput-fs_1518-fc_100k-rate_ndr-0.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/non-regression/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "1518": {
+ "ndr": {
+ "load_percent_per_direction": 12.6953125,
+ "timestamp_sec": 1648621986.5806987,
+ "stats": {
+ "total_tx_rate": 512701,
+ "overall": {
+ "rx_pkts": 5127015,
+ "drop_percentage": 3.900903780892476e-05,
+ "drop_pct": 2,
+ "max_delay_usec": 304,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 5127017,
+ "avg_delay_usec": 148.00000409595057,
+ "min_delay_usec": 34,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 2563507,
+ "min_delay_usec": 34,
+ "drop_pct": 2,
+ "max_delay_usec": 304,
+ "tx_pkts": 2563508,
+ "avg_delay_usec": 127,
+ "drop_percentage": 7.801809083490279e-05
+ },
+ "0": {
+ "rx_pkts": 2563508,
+ "min_delay_usec": 35,
+ "drop_pct": 0,
+ "max_delay_usec": 301,
+ "tx_pkts": 2563509,
+ "avg_delay_usec": 169,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 6308273104.0,
+ "theoretical_tx_rate_pps": 4063719.1157347206
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 25.390625,
+ "duration_sec": 10.0,
+ "l2frame_size": "1518",
+ "rate_pps": 515900,
+ "rate_bps": 6347656250.0,
+ "time_taken_sec": 137.57492327690125
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 1534778.8969990357,
+ "rx_pkts": 15015623,
+ "time_ms": 1648621861490,
+ "drop_pct": 24742063,
+ "total_tx_pps": 3975768,
+ "tx_pps": 4063718,
+ "tx_pkts": 39757686,
+ "drop_percentage": 62.23215053310698
+ },
+ {
+ "rx_pps": 1446228.6489812837,
+ "rx_pkts": 14371898,
+ "time_ms": 1648621874016,
+ "drop_pct": 5819692,
+ "total_tx_pps": 2019159,
+ "tx_pps": 2031858,
+ "tx_pkts": 20191590,
+ "drop_percentage": 28.822356238414113
+ },
+ {
+ "rx_pps": 1015743.6478261326,
+ "rx_pkts": 10093954,
+ "time_ms": 1648621886513,
+ "drop_pct": 1832,
+ "total_tx_pps": 1009578,
+ "tx_pps": 1015928,
+ "tx_pkts": 10095786,
+ "drop_percentage": 0.018146184952811003
+ },
+ {
+ "rx_pps": 507963.59748457576,
+ "rx_pkts": 5047892,
+ "time_ms": 1648621899009,
+ "drop_pct": 4,
+ "total_tx_pps": 504789,
+ "tx_pps": 507964,
+ "tx_pkts": 5047896,
+ "drop_percentage": 7.9240935233214e-05
+ },
+ {
+ "rx_pps": 761669.4717574592,
+ "rx_pkts": 7569092,
+ "time_ms": 1648621911525,
+ "drop_pct": 2748,
+ "total_tx_pps": 757184,
+ "tx_pps": 761946,
+ "tx_pkts": 7571840,
+ "drop_percentage": 0.0362923675090863
+ },
+ {
+ "rx_pps": 634709.9871290971,
+ "rx_pkts": 6308068,
+ "time_ms": 1648621924063,
+ "drop_pct": 2445,
+ "total_tx_pps": 631051,
+ "tx_pps": 634956,
+ "tx_pkts": 6310513,
+ "drop_percentage": 0.038744869077997304
+ },
+ {
+ "rx_pps": 570817.786304882,
+ "rx_pkts": 5672503,
+ "time_ms": 1648621936573,
+ "drop_pct": 6382,
+ "total_tx_pps": 567888,
+ "tx_pps": 571460,
+ "tx_pkts": 5678885,
+ "drop_percentage": 0.11238121567878201
+ },
+ {
+ "rx_pps": 539659.9475749807,
+ "rx_pkts": 5370429,
+ "time_ms": 1648621949076,
+ "drop_pct": 518,
+ "total_tx_pps": 537094,
+ "tx_pps": 539712,
+ "tx_pkts": 5370947,
+ "drop_percentage": 0.009644481690100461
+ },
+ {
+ "rx_pps": 523812.0403582982,
+ "rx_pkts": 5205908,
+ "time_ms": 1648621961578,
+ "drop_pct": 258,
+ "total_tx_pps": 520616,
+ "tx_pps": 523838,
+ "tx_pkts": 5206166,
+ "drop_percentage": 0.004955662189795715
+ },
+ {
+ "rx_pps": 515899.79875237396,
+ "rx_pkts": 5127015,
+ "time_ms": 1648621974085,
+ "drop_pct": 2,
+ "total_tx_pps": 512701,
+ "tx_pps": 515900,
+ "tx_pkts": 5127017,
+ "drop_percentage": 3.900903780892476e-05
+ },
+ {
+ "rx_pps": 519853.3979002963,
+ "rx_pkts": 5166564,
+ "time_ms": 1648621986579,
+ "drop_pct": 165,
+ "total_tx_pps": 516672,
+ "tx_pps": 519870,
+ "tx_pkts": 5166729,
+ "ndr_pps": 257950,
+ "drop_percentage": 0.003193509858945573
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "53e4dda50a71447681903270ab2e5a3e"
+ },
+ "synthesis": {
+ "avg_delay_usec": 148.00000409595057,
+ "total_tx_rate": 512701
+ }
+ },
+ {
+ "input": {
+ "duration_sec": "10",
+ "flavor_type": "nfvbench.loop.basic",
+ "json": "/var/lib/xtesting/results/non-regression/nfvbench-throughput-fs_9000-fc_100k-rate_ndr-2.json",
+ "frame_sizes": [
+ "9000"
+ ],
+ "rate": "ndr",
+ "flow_count": "100k",
+ "log_file": "/var/lib/xtesting/results/non-regression/nfvbench.log",
+ "user_label": "amical_tc12_basic"
+ },
+ "output": {
+ "status": "OK",
+ "result": {
+ "date": "2022-03-30 06:42:59",
+ "nfvbench_version": "5.0.4.dev29",
+ "config": {
+ "compute_nodes": null,
+ "traffic_generator": {
+ "mac_addrs_left": null,
+ "gateway_ip_addrs": [
+ "192.168.30.2",
+ "192.168.31.2"
+ ],
+ "mac_addrs_right": null,
+ "default_profile": "trex-local",
+ "src_vteps": null,
+ "generator_profile": [
+ {
+ "intf_speed": null,
+ "name": "trex-local",
+ "ip": "127.0.0.1",
+ "zmq_rpc_port": 4501,
+ "tool": "TRex",
+ "platform": {
+ "master_thread_id": "0",
+ "latency_thread_id": "1",
+ "dual_if": [
+ {
+ "threads": [
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "socket": 0
+ }
+ ]
+ },
+ "zmq_pub_port": 4500,
+ "interfaces": [
+ {
+ "switch": null,
+ "pci": "0000:00:05.0",
+ "port": 0
+ },
+ {
+ "switch": null,
+ "pci": "0000:00:06.0",
+ "port": 1
+ }
+ ],
+ "cores": 5,
+ "software_mode": false
+ }
+ ],
+ "vtep_gateway_ips": null,
+ "tg_gateway_ip_addrs_step": "0.0.0.1",
+ "udp_port_step": "1",
+ "udp_src_port": [
+ "49152",
+ "49168"
+ ],
+ "gateway_ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_addrs": [
+ "192.168.30.1",
+ "192.168.31.1"
+ ],
+ "ip_addrs": [
+ "198.18.0.0/16",
+ "198.19.0.0/16"
+ ],
+ "ip_src_static": true,
+ "host_name": "nfvbench_tg",
+ "ip_addrs_step": "0.0.0.1",
+ "tg_gateway_ip_cidrs": [
+ "192.168.1.0/24",
+ "192.168.2.0/24"
+ ],
+ "dst_vtep": null,
+ "vtep_vlan": null,
+ "udp_dst_port": [
+ "49152",
+ "49168"
+ ]
+ },
+ "availability_zone": "nova",
+ "vif_multiqueue_size": 8,
+ "periodic_gratuitous_arp": false,
+ "flavor": {
+ "vcpus": 2,
+ "disk": 0,
+ "extra_specs": {
+ "hw:cpu_policy": "dedicated",
+ "hw:mem_page_size": "large"
+ },
+ "ram": 4096
+ },
+ "floating_network": {
+ "subnet": "nfvbench-floating-subnet",
+ "name": "nfvbench-floating-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "network_type": "vlan"
+ },
+ "user_info": null,
+ "service_chain": "PVP",
+ "sriov": false,
+ "vxlan": false,
+ "intf_speed_detected": 25000000000.0,
+ "pause_sec": 2.0,
+ "internal_networks": {
+ "middle": {
+ "subnet": "nfvbench-msubnet",
+ "name": "nfvbench-mnet",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.3.0/24",
+ "network_type": "vlan"
+ },
+ "right": {
+ "subnet": "subnet_nfvbench_vn2bis",
+ "name": "net_nfvbench_vn2bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.31.0/24",
+ "network_type": "vlan"
+ },
+ "left": {
+ "subnet": "subnet_nfvbench_vn1bis",
+ "name": "net_nfvbench_vn1bis",
+ "segmentation_id": null,
+ "physical_network": null,
+ "mpls_transport_labels": null,
+ "cidr": "192.168.30.0/24",
+ "network_type": "vlan"
+ }
+ },
+ "no_vswitch_access": false,
+ "traffic": {
+ "bidirectional": true,
+ "profile": "custom_traffic_profile"
+ },
+ "restart": false,
+ "vm_image_file": "nfvbenchvm-0.15.0901.qcow2",
+ "name": "nfvbench.conf",
+ "std_json": null,
+ "l2_loopback": false,
+ "request_id": "f621b77faf384c08b3fcb9b6a3ec9523",
+ "debug": false,
+ "group_id": null,
+ "loop_vm_name": "nfvbench-loop-vm",
+ "check_traffic_time_sec": 200,
+ "num_mbufs": 128000,
+ "rate": "ndr",
+ "service_chain_count": 1,
+ "service_chain_shared_net": true,
+ "measurement": {
+ "NDR": 0.001,
+ "PDR": 0.1,
+ "load_epsilon": 0.1
+ },
+ "l3_router": false,
+ "debug_mask": 0,
+ "factory_class": "BasicFactory",
+ "tg-tool": "TRex",
+ "frame_sizes": [
+ "9000"
+ ],
+ "service_mode": false,
+ "edge_networks": {
+ "right": {
+ "subnet": "nfvbench-subnet3",
+ "name": "nfvbench-net3",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.4.0/24",
+ "router_name": "router_right",
+ "gateway": null
+ },
+ "left": {
+ "subnet": "nfvbench-subnet2",
+ "name": "nfvbench-net2",
+ "segmentation_id": null,
+ "network_type": null,
+ "physical_network": null,
+ "cidr": "192.168.3.0/24",
+ "router_name": "router_left",
+ "gateway": null
+ }
+ },
+ "ndr_run": true,
+ "use_management_port": false,
+ "hypervisor_hostname": "localdomain",
+ "cache_size": 16,
+ "pdr_run": false,
+ "vlan_tagging": false,
+ "fluentd": [
+ {
+ "ip": "172.20.73.203",
+ "result_tag": "nfvbench.results.amical",
+ "logging_tag": "nfvbench.logs.amical",
+ "port": 25225
+ }
+ ],
+ "use_floating_ip": false,
+ "flow_count": 100000,
+ "loop_vm_arp": false,
+ "user_id": null,
+ "openrc_file": null,
+ "disable_hdrh": false,
+ "json": "/var/lib/xtesting/results/non-regression/nfvbench-throughput-fs_9000-fc_100k-rate_ndr-2.json",
+ "vm_forwarder": "vpp",
+ "factory_module": "nfvbench.factory",
+ "no_latency_streams": false,
+ "single_run": false,
+ "no_arp": false,
+ "cores_used": 5,
+ "traffic_profile": [
+ {
+ "l2frame_size": [
+ "9000"
+ ],
+ "name": "custom_traffic_profile"
+ }
+ ],
+ "vlans": [
+ 2512,
+ 2517
+ ],
+ "tg-name": "trex-local",
+ "management_network": {
+ "subnet": "nfvbench-management-subnet",
+ "name": "nfvbench-management-net",
+ "segmentation_id": null,
+ "network_type": "vlan",
+ "physical_network": null,
+ "cidr": "192.168.0.0/24",
+ "gateway": "192.168.0.254"
+ },
+ "no_traffic": false,
+ "mpls": false,
+ "duration_sec": 10.0,
+ "clouds_detail": "openstack",
+ "mbuf_64": null,
+ "generic_poll_sec": 2,
+ "idle_interfaces_per_vm": 0,
+ "no_flow_stats": true,
+ "lat_percentiles": [
+ 25,
+ 75,
+ 99
+ ],
+ "no_cleanup": true,
+ "no_e2e_check": false,
+ "intf_speed_used": 25000000000.0,
+ "generator_profile": "trex-local",
+ "mbuf_factor": 0.2,
+ "user_label": "amical_tc12_basic",
+ "intf_speed": null,
+ "generic_retry_count": 100,
+ "flavor_type": "nfvbench.loop.basic",
+ "use_sriov_middle_net": false,
+ "json_file": "/var/lib/xtesting/results/non-regression/nfvbench-throughput-fs_9000-fc_100k-rate_ndr-2.json",
+ "std_json_path": null,
+ "unidir_reverse_traffic_pps": 1,
+ "i40e_mixed": "ignore",
+ "gratuitous_arp_pps": 1,
+ "idle_networks": {
+ "subnet": "nfvbench-idle-subnet",
+ "name": "nfvbench-idle-net",
+ "segmentation_id": null,
+ "physical_network": null,
+ "cidr": "192.169.1.0/24",
+ "network_type": "vlan"
+ },
+ "interval_sec": 10.0,
+ "no_latency_stats": false,
+ "cores": null,
+ "log_file": "/var/lib/xtesting/results/non-regression/nfvbench.log",
+ "external_networks": {
+ "right": null,
+ "left": null
+ }
+ },
+ "benchmarks": {
+ "network": {
+ "service_chain": {
+ "PVP": {
+ "result": {
+ "compute_nodes": {},
+ "profile": "custom_traffic_profile",
+ "service_chain_count": 1,
+ "result": {
+ "9000": {
+ "ndr": {
+ "load_percent_per_direction": 39.84375,
+ "timestamp_sec": 1648622722.125216,
+ "stats": {
+ "total_tx_rate": 274380,
+ "overall": {
+ "rx_pkts": 2743802,
+ "drop_percentage": 0.0,
+ "drop_pct": 0,
+ "max_delay_usec": 1244,
+ "lat_percentile": {
+ "99": "n/a",
+ "25": "n/a",
+ "75": "n/a"
+ },
+ "tx_pkts": 2743802,
+ "avg_delay_usec": 641.5002263282846,
+ "min_delay_usec": 72,
+ "hdrh": "HISTFAAAABt4nJNpmSzMgADMUJoRTM6Y1mD/ASIAAEr9BCg="
+ },
+ "1": {
+ "rx_pkts": 1371832,
+ "min_delay_usec": 74,
+ "drop_pct": 0,
+ "max_delay_usec": 1244,
+ "tx_pkts": 1371970,
+ "avg_delay_usec": 637,
+ "drop_percentage": 0.0
+ },
+ "0": {
+ "rx_pkts": 1371970,
+ "min_delay_usec": 72,
+ "drop_pct": 0,
+ "max_delay_usec": 1235,
+ "tx_pkts": 1371832,
+ "avg_delay_usec": 646,
+ "drop_percentage": 0.0
+ },
+ "theoretical_tx_rate_bps": 50000000000.0,
+ "offered_tx_rate_bps": 19799260800.0,
+ "theoretical_tx_rate_pps": 692904.6563192905
+ },
+ "initial_rate_type": "rate_percent",
+ "rate_percent": 79.6875,
+ "duration_sec": 10.0,
+ "l2frame_size": "9000",
+ "rate_pps": 276078,
+ "rate_bps": 19921875000.0,
+ "time_taken_sec": 137.65054941177368
+ },
+ "iteration_stats": {
+ "ndr_pdr": [
+ {
+ "rx_pps": 273698.46051110676,
+ "rx_pkts": 2718128,
+ "time_ms": 1648622596961,
+ "drop_pct": 4163174,
+ "total_tx_pps": 688130,
+ "tx_pps": 692904,
+ "tx_pkts": 6881302,
+ "drop_percentage": 60.49980076444836
+ },
+ {
+ "rx_pps": 276582.23920405895,
+ "rx_pkts": 2748537,
+ "time_ms": 1648622609474,
+ "drop_pct": 694331,
+ "total_tx_pps": 344286,
+ "tx_pps": 346452,
+ "tx_pkts": 3442868,
+ "drop_percentage": 20.167226858537706
+ },
+ {
+ "rx_pps": 173226.0,
+ "rx_pkts": 1721434,
+ "time_ms": 1648622622000,
+ "drop_pct": 0,
+ "total_tx_pps": 172143,
+ "tx_pps": 173226,
+ "tx_pkts": 1721434,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 259838.0,
+ "rx_pkts": 2582143,
+ "time_ms": 1648622634517,
+ "drop_pct": 0,
+ "total_tx_pps": 258214,
+ "tx_pps": 259838,
+ "tx_pkts": 2582143,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 276973.17842007434,
+ "rx_pkts": 2752701,
+ "time_ms": 1648622647105,
+ "drop_pct": 260099,
+ "total_tx_pps": 301280,
+ "tx_pps": 303144,
+ "tx_pkts": 3012800,
+ "drop_percentage": 8.633131970260223
+ },
+ {
+ "rx_pps": 276794.44570930133,
+ "rx_pkts": 2750648,
+ "time_ms": 1648622659614,
+ "drop_pct": 46682,
+ "total_tx_pps": 279733,
+ "tx_pps": 281492,
+ "tx_pkts": 2797330,
+ "drop_percentage": 1.6688056110648368
+ },
+ {
+ "rx_pps": 270664.0,
+ "rx_pkts": 2694191,
+ "time_ms": 1648622672130,
+ "drop_pct": 0,
+ "total_tx_pps": 269419,
+ "tx_pps": 270664,
+ "tx_pkts": 2694191,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 276078.0,
+ "rx_pkts": 2743802,
+ "time_ms": 1648622684633,
+ "drop_pct": 0,
+ "total_tx_pps": 274380,
+ "tx_pps": 276078,
+ "tx_pkts": 2743802,
+ "drop_percentage": 0.0
+ },
+ {
+ "rx_pps": 276955.355288579,
+ "rx_pkts": 2752523,
+ "time_ms": 1648622697132,
+ "drop_pct": 18174,
+ "total_tx_pps": 277069,
+ "tx_pps": 278784,
+ "tx_pkts": 2770697,
+ "drop_percentage": 0.6559360334240807
+ },
+ {
+ "rx_pps": 276409.30910346564,
+ "rx_pkts": 2746820,
+ "time_ms": 1648622709624,
+ "drop_pct": 10163,
+ "total_tx_pps": 275698,
+ "tx_pps": 277432,
+ "tx_pkts": 2756983,
+ "drop_percentage": 0.3686275903768721
+ },
+ {
+ "rx_pps": 276744.94431529724,
+ "rx_pkts": 2750432,
+ "time_ms": 1648622722124,
+ "drop_pct": 90,
+ "total_tx_pps": 275052,
+ "tx_pps": 276754,
+ "tx_pkts": 2750522,
+ "ndr_pps": 138039,
+ "drop_percentage": 0.003272106167483845
+ }
+ ]
+ }
+ }
+ },
+ "flow_count": 100000,
+ "bidirectional": true
+ }
+ }
+ },
+ "versions": {
+ "Traffic_Generator": {
+ "build_date": "Apr 14 2021",
+ "version": "v2.89",
+ "built_by": "hhaim",
+ "mode": "STL",
+ "build_time": "11:22:15"
+ }
+ }
+ }
+ }
+ },
+ "request_id": "f621b77faf384c08b3fcb9b6a3ec9523"
+ },
+ "synthesis": {
+ "avg_delay_usec": 641.5002263282846,
+ "total_tx_rate": 274380
+ }
+ }
+ ]
+ },
+ "fail_tests": 0,
+ "total_tests": 1,
+ "pass_tests": 1
+ }
+ }
+ ]
+}
diff --git a/test/ut_behave_tests/test_steps.py b/test/ut_behave_tests/test_steps.py
new file mode 100644
index 0000000..ae6df45
--- /dev/null
+++ b/test/ut_behave_tests/test_steps.py
@@ -0,0 +1,151 @@
+#!/usr/bin/env python
+# Copyright 2022 Orange
+#
+# 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.
+#
+
+"""
+Unit tests for some of the functions found in behave_tests/features/steps/steps.py
+"""
+
+import logging
+import unittest
+from unittest.mock import call, Mock, patch
+
+from behave_tests.features.steps.steps import get_last_result
+from .test_utils import setup_logging, stub_requests_get
+
+
+def setUpModule():
+ setup_logging()
+
+
+class TestGetLastResult(unittest.TestCase):
+ def setUp(self):
+ # Mock requests.get() so that TestAPI results come from JSON files
+ # found in test_data/ directory.
+ patcher = patch('behave_tests.features.steps.testapi.requests')
+ self._mock_requests = patcher.start()
+ self._mock_requests.get.side_effect = stub_requests_get
+ self.addCleanup(patcher.stop)
+
+ # Setup a mock for behave context
+ self._context = Mock()
+ self._context.data = {
+ 'PROJECT_NAME': "nfvbench",
+ 'TEST_DB_URL': "http://127.0.0.1:8000/api/v1/results"
+ }
+ self._context.logger = logging.getLogger("behave_tests")
+
+ def test_get_last_result_throughput_characterization(self):
+ self._context.json = {
+ "frame_sizes": ['64'],
+ "flow_count": "100k",
+ "duration_sec": '10',
+ "rate": "ndr",
+ "user_label": "amical_tc18_loopback"
+ }
+ self._context.tag = "throughput"
+
+ last_result = get_last_result(self._context, reference=True)
+
+ self.assertIsNotNone(last_result)
+ self.assertEqual(16765582, last_result["synthesis"]["total_tx_rate"])
+ self.assertEqual(25, round(last_result["synthesis"]["avg_delay_usec"]))
+
+ self._mock_requests.get.assert_called_once_with(
+ "http://127.0.0.1:8000/api/v1/results?"
+ "project=nfvbench&case=characterization&criteria=PASS&page=1")
+
+ def test_get_last_result_latency_characterization(self):
+ self._context.json = {
+ "frame_sizes": ['768'],
+ "flow_count": "100k",
+ "duration_sec": '10',
+ "rate": "90%",
+ "user_label": "amical_tc6_intensive"
+ }
+ self._context.tag = "latency"
+
+ last_result = get_last_result(self._context, reference=True)
+
+ self.assertIsNotNone(last_result)
+ self.assertEqual(262275, last_result["synthesis"]["total_tx_rate"])
+ self.assertEqual(353, round(last_result["synthesis"]["avg_delay_usec"]))
+
+ self._mock_requests.get.assert_has_calls([
+ call("http://127.0.0.1:8000/api/v1/results?"
+ "project=nfvbench&case=characterization&criteria=PASS&page=1"),
+ call("http://127.0.0.1:8000/api/v1/results?"
+ "project=nfvbench&case=characterization&criteria=PASS&page=2")])
+
+ def test_last_result_not_found(self):
+ self._context.json = {
+ "frame_sizes": ['64'],
+ "flow_count": "100k",
+ "duration_sec": '10',
+ "rate": "ndr",
+ "user_label": "toto_titi_tata" # User label not in test data
+ }
+ self._context.tag = "throughput"
+
+ with self.assertRaises(AssertionError):
+ get_last_result(self._context, reference=True)
+
+ self._mock_requests.get.assert_has_calls([
+ call("http://127.0.0.1:8000/api/v1/results?"
+ "project=nfvbench&case=characterization&criteria=PASS&page=1"),
+ call("http://127.0.0.1:8000/api/v1/results?"
+ "project=nfvbench&case=characterization&criteria=PASS&page=2")])
+
+ def test_get_last_result_throughput_non_regression(self):
+ self._context.CASE_NAME = "non-regression"
+ self._context.json = {
+ "frame_sizes": ['1518'],
+ "flow_count": "100k",
+ "duration_sec": '10',
+ "rate": "ndr",
+ "user_label": "amical_tc12_basic"
+ }
+ self._context.tag = "throughput"
+
+ last_result = get_last_result(self._context)
+
+ self.assertIsNotNone(last_result)
+ self.assertEqual(512701, last_result["synthesis"]["total_tx_rate"])
+ self.assertEqual(148, round(last_result["synthesis"]["avg_delay_usec"]))
+
+ self._mock_requests.get.assert_called_once_with(
+ "http://127.0.0.1:8000/api/v1/results?"
+ "project=nfvbench&case=non-regression&criteria=PASS&page=1")
+
+ def test_get_last_result_latency_non_regression(self):
+ self._context.CASE_NAME = "non-regression"
+ self._context.json = {
+ "frame_sizes": ['1518'],
+ "flow_count": "100k",
+ "duration_sec": '10',
+ "rate": "70%",
+ "user_label": "amical_tc12_basic"
+ }
+ self._context.tag = "latency"
+
+ last_result = get_last_result(self._context)
+
+ self.assertIsNotNone(last_result)
+ self.assertEqual(352040, last_result["synthesis"]["total_tx_rate"])
+ self.assertEqual(114, round(last_result["synthesis"]["avg_delay_usec"]))
+
+ self._mock_requests.get.assert_called_once_with(
+ "http://127.0.0.1:8000/api/v1/results?"
+ "project=nfvbench&case=non-regression&criteria=PASS&page=1")
diff --git a/test/ut_behave_tests/test_testapi.py b/test/ut_behave_tests/test_testapi.py
new file mode 100644
index 0000000..0fbcd96
--- /dev/null
+++ b/test/ut_behave_tests/test_testapi.py
@@ -0,0 +1,132 @@
+#!/usr/bin/env python
+# Copyright 2022 Orange
+#
+# 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.
+#
+
+"""
+Unit tests for the testapi module found in behave_tests/features/steps.
+"""
+
+import unittest
+from unittest.mock import call, patch
+
+from behave_tests.features.steps.testapi import TestapiClient
+from .test_utils import setup_logging, stub_requests_get
+
+
+def setUpModule():
+ setup_logging(log_filename="ut_behave_tests_testapi.log")
+
+
+class TestTestapiClient(unittest.TestCase):
+ def setUp(self):
+ patcher = patch('behave_tests.features.steps.testapi.requests')
+ self.mock_requests = patcher.start()
+ self.mock_requests.get.side_effect = stub_requests_get
+ self.addCleanup(patcher.stop)
+
+ def test_find_characterization_throughput_on_page_1(self):
+ client = TestapiClient("http://127.0.0.1:8000/api/v1/results")
+ testapi_params = {"project_name": "nfvbench", "case_name": "characterization"}
+ nfvbench_test_input = {"frame_sizes": ['64'],
+ "flow_count": "100k",
+ "duration_sec": '10',
+ "rate": "ndr",
+ "user_label": "amical_tc18_loopback"}
+ last_result = client.find_last_result(testapi_params,
+ scenario_tag="throughput",
+ nfvbench_test_input=nfvbench_test_input)
+ self.assertIsNotNone(last_result)
+ self.assertEqual(16765582, last_result["synthesis"]["total_tx_rate"])
+ self.assertEqual(25, round(last_result["synthesis"]["avg_delay_usec"]))
+
+ self.mock_requests.get.assert_called_once_with(
+ "http://127.0.0.1:8000/api/v1/results?"
+ "project=nfvbench&case=characterization&criteria=PASS&page=1")
+
+ def test_find_characterization_latency_on_page_2(self):
+ client = TestapiClient("http://127.0.0.1:8000/api/v1/results")
+ testapi_params = {"project_name": "nfvbench", "case_name": "characterization"}
+ nfvbench_test_input = {"frame_sizes": ['768'],
+ "flow_count": "100k",
+ "duration_sec": '10',
+ "rate": "90%",
+ "user_label": "amical_tc6_intensive"}
+ last_result = client.find_last_result(testapi_params,
+ scenario_tag="latency",
+ nfvbench_test_input=nfvbench_test_input)
+ self.assertIsNotNone(last_result)
+ self.assertEqual(262275, last_result["synthesis"]["total_tx_rate"])
+ self.assertEqual(353, round(last_result["synthesis"]["avg_delay_usec"]))
+
+ self.mock_requests.get.assert_has_calls([
+ call("http://127.0.0.1:8000/api/v1/results?"
+ "project=nfvbench&case=characterization&criteria=PASS&page=1"),
+ call("http://127.0.0.1:8000/api/v1/results?"
+ "project=nfvbench&case=characterization&criteria=PASS&page=2")])
+
+ def test_no_result_found(self):
+ client = TestapiClient("http://127.0.0.1:8000/api/v1/results")
+ testapi_params = {"project_name": "nfvbench", "case_name": "characterization"}
+ nfvbench_test_input = {"frame_sizes": ['768'],
+ "flow_count": "100k",
+ "duration_sec": '10',
+ "rate": "90%",
+ "user_label": "toto_titi_tata"} # User label not in test data
+ last_result = client.find_last_result(testapi_params,
+ scenario_tag="throughput",
+ nfvbench_test_input=nfvbench_test_input)
+ self.assertIsNone(last_result)
+
+ self.mock_requests.get.assert_has_calls([
+ call("http://127.0.0.1:8000/api/v1/results?"
+ "project=nfvbench&case=characterization&criteria=PASS&page=1"),
+ call("http://127.0.0.1:8000/api/v1/results?"
+ "project=nfvbench&case=characterization&criteria=PASS&page=2")])
+
+ def test_requests_errors(self):
+ """Check that an exception is raised in case of problem with requests."""
+ client = TestapiClient("http://127.0.0.1:8000/api/v1/results")
+ testapi_params = {"project_name": "foo", # non-existent project
+ "case_name": "characterization"}
+ nfvbench_test_input = {"frame_sizes": ['768'],
+ "flow_count": "100k",
+ "duration_sec": '10',
+ "rate": "90%",
+ "user_label": "amical_tc6_intensive"}
+
+ with self.assertRaises(ValueError):
+ client.find_last_result(testapi_params, scenario_tag="throughput",
+ nfvbench_test_input=nfvbench_test_input)
+
+ def test_flavor_is_ignored(self):
+ """Check that lookup in TestAPI does not filter on the flavor_type."""
+ client = TestapiClient("http://127.0.0.1:8000/api/v1/results")
+ testapi_params = {"project_name": "nfvbench", "case_name": "characterization"}
+ nfvbench_test_input = {"frame_sizes": ['64'],
+ "flow_count": "100k",
+ "duration_sec": '10',
+ "rate": "ndr",
+ "user_label": "amical_tc18_loopback",
+ "flavor_type": "no_such_flavor"}
+ last_result = client.find_last_result(testapi_params,
+ scenario_tag="throughput",
+ nfvbench_test_input=nfvbench_test_input)
+ self.assertIsNotNone(last_result)
+ self.assertEqual(16765582, last_result["synthesis"]["total_tx_rate"])
+ self.assertEqual(25, round(last_result["synthesis"]["avg_delay_usec"]))
+
+ self.mock_requests.get.assert_called_once_with(
+ "http://127.0.0.1:8000/api/v1/results?"
+ "project=nfvbench&case=characterization&criteria=PASS&page=1")
diff --git a/test/ut_behave_tests/test_utils.py b/test/ut_behave_tests/test_utils.py
new file mode 100644
index 0000000..0d06707
--- /dev/null
+++ b/test/ut_behave_tests/test_utils.py
@@ -0,0 +1,119 @@
+#!/usr/bin/env python
+# Copyright 2022 Orange
+#
+# 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.
+#
+
+"""
+Utility functions for unit tests.
+"""
+
+import json
+import logging
+import pathlib
+import unittest
+from unittest.mock import Mock
+
+
+# -----------------------------------------------------------------------------------------
+# Logging helpers
+# -----------------------------------------------------------------------------------------
+
+def setup_logging(log_filename="ut_behave_tests.log", *, log_to_console=False):
+ """Setup logging for unit tests.
+
+ Principles:
+ - re-use the global "behave_tests" logger
+ - if `log_to_console` is True, log messages up to INFO level to the console
+ (can be useful when running tests with unittest instead of pytest)
+ - if `log_filename` is provided, log messages up to DEBUG level to the log file
+ """
+ logger = logging.getLogger("behave_tests")
+ logger.setLevel(logging.DEBUG)
+ formatter = logging.Formatter("%(levelname)s:%(filename)s:%(lineno)s: %(message)s")
+
+ # Configure logging to the console
+ if log_to_console:
+ ch = logging.StreamHandler()
+ ch.setLevel(logging.INFO)
+ ch.setFormatter(formatter)
+ logger.addHandler(ch)
+
+ # Configure logging to the log file
+ if log_filename is not None:
+ fh = logging.FileHandler(filename=log_filename, mode='w')
+ fh.setLevel(logging.DEBUG)
+ fh.setFormatter(formatter)
+ logger.addHandler(fh)
+
+ return logger
+
+
+# -----------------------------------------------------------------------------------------
+# Test data helpers
+# -----------------------------------------------------------------------------------------
+
+def get_test_data_dir() -> pathlib.Path:
+ """Get absolute path of the test_data/ dir.
+
+ We need this because the unit tests can be run from different locations
+ depending on the context (tox, development, ...)
+ """
+ return pathlib.Path(__file__).parent / 'test_data'
+
+
+def stub_requests_get(testapi_url):
+ """Mock a request to TestAPI results database.
+
+ Instead of doing a real request, build a filename from the URL suffix, find
+ the file in the `test_data` directory and return the contents of the file.
+
+ Args:
+ testapi_url: a URL starting with `http://127.0.0.1:8000/api/v1/results?`
+ and followed by the results file name without extension.
+
+ Returns:
+ A mock of a `requests.Response` object with the attributes `text` and
+ `status_code` and the method `json()`.
+ """
+ response = Mock()
+ filename_prefix = testapi_url.replace('http://127.0.0.1:8000/api/v1/results?', '')
+ if filename_prefix == testapi_url:
+ raise ValueError("For unit tests, TestAPI URL must start with "
+ "http://127.0.0.1:8000/api/v1/results?")
+ page_filename = get_test_data_dir() / (filename_prefix + ".json")
+ try:
+ with open(page_filename, 'r', encoding='utf-8') as results:
+ response.text = results.read()
+ response.json = lambda: json.loads(response.text)
+ response.status_code = 200
+ return response
+ except FileNotFoundError as e:
+ logging.getLogger("behave_tests").exception(e)
+ raise ValueError(f"No test data available for TestAPI URL: {testapi_url}") from e
+
+
+class TestStubRequestsGet(unittest.TestCase):
+ def test_valid_url(self):
+ response = stub_requests_get("http://127.0.0.1:8000/api/v1/results?"
+ "project=nfvbench&case=characterization&criteria=PASS&page=1")
+ self.assertEqual(200, response.status_code)
+ self.assertEqual("nfvbench", response.json()["results"][0]["project_name"])
+
+ def test_bad_prefix(self):
+ with self.assertRaises(ValueError):
+ stub_requests_get("http://no.way/api/v1/results?" "dummy_suffix")
+
+ def test_file_not_found(self):
+ with self.assertRaises(ValueError):
+ stub_requests_get("http://127.0.0.1:8000/api/v1/results?" "dummy_suffix")
diff --git a/tox.ini b/tox.ini
index 337ee0d..9b4d218 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,6 +1,6 @@
[tox]
minversion = 1.6
-envlist = py27,pep8,lint,docs,docs-linkcheck
+envlist = py38,pep8,lint,docs,docs-linkcheck
skipsdist = True
[testenv]
@@ -8,46 +8,77 @@ usedevelop = True
install_command = pip install -U {opts} {packages}
setenv =
VIRTUAL_ENV={envdir}
-deps = -r{toxinidir}/requirements.txt
- -r{toxinidir}/test-requirements.txt
-commands = py.test -q --basetemp={envtmpdir} {posargs}
+deps =
+ -chttps://opendev.org/openstack/requirements/raw/branch/stable/yoga/upper-constraints.txt
+ -r{toxinidir}/requirements.txt
+ -r{toxinidir}/test-requirements.txt
+commands = py.test -q --basetemp={envtmpdir} {posargs} test/
[testenv:pep8]
+basepython = python3.8
+skip_install = True
commands = flake8 {toxinidir}
[testenv:lint]
+basepython = python3.8
+skip_install = True
commands = pylint --rcfile pylint.rc nfvbench test
-[testenv:venv]
-commands = {posargs}
-
-[testenv:cover]
-commands = python setup.py testr --coverage --testr-args='{posargs}'
-
[flake8]
# H803 skipped on purpose per list discussion.
# E123, E125 skipped as they are invalid PEP-8.
+# E117,E126,E127,E128,E211,E226,E231,E252,E305,E731,W503,W504 skipped as they
+# are introduced by newer versions of flake8 (update from 2.2.4 to 3.9.2)
+# H216,H301,H401 skipped as they are introduced by newer version of hacking
+# (update from 0.10.3 to 4.1.0)
max-line-length = 100
show-source = True
+#E117: over-indented (comment)
+#E126: continuation line over-indented for hanging indent
+#E127: continuation line over-indented for visual indent
+#E128: continuation line under-indented for visual indent
+#E211: whitespace before '('
+#E226: missing whitespace around arithmetic operator
+#E231: missing whitespace after ','
+#E252: missing whitespace around parameter equals
#E302: expected 2 blank linee
#E303: too many blank lines (2)
+#E305: expected 2 blank lines after class or function definition, found 1
+#E731: do not assign a lambda expression, use a def
+#W503: line break before binary operator
+#W504: line break after binary operator
+#H101: Use TODO(NAME)
+#H216: The unittest.mock module should be used rather than the third party mock package unless actually needed. If so, disable the H216 check in hacking config and ensure mock is declared in the project's requirements.
#H233: Python 3.x incompatible use of print operator
#H236: Python 3.x incompatible __metaclass__, use six.add_metaclass()
+#H301: one import per line
#H302: import only modules.
+#H304: No relative imports
+#H306: imports not in alphabetical order
+#H401: docstring should not start with a space
#H404: multi line docstring should start without a leading new line
#H405: multi line docstring summary not separated with an empty line
#H904: Wrap long lines in parentheses instead of a backslash
-ignore = E123,E125,H803,E302,E303,H104,H233,H236,H302,H404,H405,H904,D102,D100,D107
+ignore = E117,E123,E125,E126,E127,E128,E211,E226,E231,E252,E302,E303,E305,E731,W503,W504,H101,H104,H216,H233,H236,H301,H302,H304,H306,H401,H404,H405,H803,H904,D102,D100,D107
builtins = _
-exclude=venv,.git,.tox,dist,doc,*openstack/common*,*lib/python*,*egg,build,dib-venv
+exclude=venv,.git,.tox,dist,doc,*openstack/common*,*lib/python*,*egg,build,nfvbenchvm
[testenv:docs]
-deps = -rdocs/requirements.txt
+basepython = python3.8
+deps =
+ -chttps://opendev.org/openstack/requirements/raw/branch/stable/yoga/upper-constraints.txt
+ -rdocs/requirements.txt
+skip_install = True
commands =
sphinx-build -b html -n -d {envtmpdir}/doctrees ./docs/ {toxinidir}/docs/_build/html
echo "Generated docs available in {toxinidir}/docs/_build/html"
whitelist_externals = echo
[testenv:docs-linkcheck]
-deps = -rdocs/requirements.txt
+basepython = python3.8
+deps =
+ -chttps://opendev.org/openstack/requirements/raw/branch/stable/yoga/upper-constraints.txt
+ -rdocs/requirements.txt
+skip_install = True
+passenv = http_proxy https_proxy no_proxy
commands = sphinx-build -b linkcheck -d {envtmpdir}/doctrees ./docs/ {toxinidir}/docs/_build/linkcheck
diff --git a/xtesting/ansible/host_vars/127.0.0.1 b/xtesting/ansible/host_vars/127.0.0.1
new file mode 100644
index 0000000..52d44a6
--- /dev/null
+++ b/xtesting/ansible/host_vars/127.0.0.1
@@ -0,0 +1,10 @@
+docker_args:
+ env: {}
+ params:
+ net: host
+ privileged: true
+ volumes:
+ - /lib/modules/$(uname -r):/lib/modules/$(uname -r)
+ - /usr/src/kernels:/usr/src/kernels -v /dev:/dev
+ - /home/opnfv/nfvbench/config:/etc/nfvbench
+ - /home/opnfv/nfvbench/results:/var/lib/xtesting/results
diff --git a/xtesting/ansible/site.yml b/xtesting/ansible/site.yml
new file mode 100644
index 0000000..37fa6c3
--- /dev/null
+++ b/xtesting/ansible/site.yml
@@ -0,0 +1,22 @@
+---
+- hosts:
+ - 127.0.0.1
+ roles:
+ - role: collivier.xtesting
+ project: nfvbench
+ gerrit_project: nfvbench
+ builds:
+ steps:
+ - name: build opnfv/nfvbench
+ containers:
+ - name: nfvbench
+ ref_arg: BRANCH
+ path: docker
+ suites:
+ - container: nfvbench
+ tests:
+ - 10kpps-pvp-run
+ - characterization
+ - non-regression
+ properties:
+ execution-type: SEQUENTIALLY \ No newline at end of file
diff --git a/xtesting/testcases.yaml b/xtesting/testcases.yaml
new file mode 100644
index 0000000..03579b7
--- /dev/null
+++ b/xtesting/testcases.yaml
@@ -0,0 +1,101 @@
+---
+tiers:
+ -
+ name: nfvbench
+ order: 1
+ description: 'Data Plane Performance Testing'
+ testcases:
+ -
+ case_name: characterization
+ project_name: nfvbench
+ criteria: 100
+ blocking: true
+ clean_flag: false
+ description: ''
+ run:
+ name: 'nfvbench_behaveframework'
+ args:
+ suites:
+ - /opt/nfvbench/behave_tests/features/characterization-full.feature
+ tags:
+ - characterization
+ console:
+ - true
+ -
+ case_name: non-regression
+ project_name: nfvbench
+ criteria: 100
+ blocking: true
+ clean_flag: false
+ description: ''
+ run:
+ name: 'nfvbench_behaveframework'
+ args:
+ suites:
+ - /opt/nfvbench/behave_tests/features/non-regression.feature
+ tags:
+ - non-regression
+ console:
+ - true
+
+ -
+ name: nfvbench-rapid-characterization
+ order: 2
+ description: 'Data Plane Performance Testing'
+ testcases:
+ -
+ case_name: rapid-characterization
+ project_name: nfvbench
+ criteria: 100
+ blocking: true
+ clean_flag: false
+ description: ''
+ run:
+ name: 'nfvbench_behaveframework'
+ args:
+ suites:
+ - /opt/nfvbench/behave_tests/features/characterization-samples.feature
+ tags:
+ - characterization
+ console:
+ - true
+ -
+ name: quick-test-10kpps
+ order: 3
+ description: 'Quick nfvbench test at low packet rate'
+ testcases:
+ -
+ case_name: quick-test-10kpps
+ project_name: nfvbench
+ criteria: 100
+ blocking: true
+ clean_flag: false
+ description: ''
+ run:
+ name: 'nfvbench_behaveframework'
+ args:
+ suites:
+ - /opt/nfvbench/behave_tests/features/quick-test-10kpps.feature
+ tags:
+ - quick-test-10kpps
+ console:
+ - true
+ -
+ name: nfvbench-demo
+ order: 4
+ description: 'Data Plane Performance Testing'
+ testcases:
+ -
+ case_name: 10kpps-pvp-run
+ project_name: nfvbench
+ criteria: 100
+ blocking: true
+ clean_flag: false
+ description: ''
+ run:
+ name: 'bashfeature'
+ args:
+ cmd:
+ - nfvbench -c /etc/nfvbench/nfvbench.cfg --rate 10kpps
+ console:
+ - true