aboutsummaryrefslogtreecommitdiffstats
path: root/docs/development
diff options
context:
space:
mode:
Diffstat (limited to 'docs/development')
-rw-r--r--docs/development/design/design.rst65
-rw-r--r--docs/development/design/index.rst10
-rw-r--r--docs/development/design/versioning.rst22
-rw-r--r--docs/development/overview/overview.rst15
4 files changed, 107 insertions, 5 deletions
diff --git a/docs/development/design/design.rst b/docs/development/design/design.rst
index 6717fd7..d0f2f45 100644
--- a/docs/development/design/design.rst
+++ b/docs/development/design/design.rst
@@ -4,7 +4,70 @@
: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 can be decomposed in the following components:
+- Configuration
+- Staging
+- Traffic generation
+- Traffic generator 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])
+- REST request body
+- custom platform pluging
+
+The precedence order for configuration is (from highest precedence to lowest precedence)
+- CLI confguration or REST configuration
+- custom platform plugin
+- default configuration
+
+The custom platform plugin is an optional python class that can be used to override default configuration options
+with default platform options which can be either hardcoded or calculated at runtime from platform specific sources
+(such as platform deployment configuration files).
+A custom platform plugin class is a child of the parent class nfvbench.config_plugin.ConfigPlugin.
+
+
+Staging
+-------
+The staging component is in charge of staging the OpenStack resources that are used for the requested packet path.
+For example, for a PVP packet path, this module will create 2 Neutron networks and one VM instance connected to these 2 networks.
+Multi-chaining and VM placement is also handled by this module.
+
+Main class: nfvbench.chain_managers.StageManager
+
+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
+- NDR/PDR binary search
+
+Main class: nfvbench.traffic_client.TrafficClient
+
+Traffic Generator Results Analysis
+----------------------------------
+At the end of a traffic generation session, this component collects the results from TRex and packages them in a format that
+is suitable for the various output formats (JSON, REST, file, fluentd).
+In the case of multi-chaining, it handles aggregation of results across chains.
+Main class: nfvbench.chain_managers.StatsManager
diff --git a/docs/development/design/index.rst b/docs/development/design/index.rst
index a8093cb..c54888a 100644
--- a/docs/development/design/index.rst
+++ b/docs/development/design/index.rst
@@ -1,11 +1,15 @@
-.. To be decided
+.. 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
design
+ versioning
ndrpdr
diff --git a/docs/development/design/versioning.rst b/docs/development/design/versioning.rst
new file mode 100644
index 0000000..870ed86
--- /dev/null
+++ b/docs/development/design/versioning.rst
@@ -0,0 +1,22 @@
+
+.. This work is licensed under a Creative Commons Attribution 4.0 International
+.. License.
+.. http://creativecommons.org/licenses/by/4.0
+.. (c) Cisco Systems, Inc
+
+Versioning
+==========
+
+NFVbench uses semver compatible git tags such as "1.0.0". These tags are also called project tags and applied at important commits on the master branch exclusively.
+Rules for the version numbers follow the semver 2.0 specification (http://semver.org).
+These git tags are applied indepently of the OPNFV release tags which are applied only on the stable release branches (e.g. "opnfv-5.0.0").
+
+In general it is recommeneded to always have a project git version tag associated to any OPNFV release tag content obtained from a sync from master.
+
+NFVbench Docker containers will be versioned based on the OPNF release tags or based on NFVbench project tags.
+
+
+
+
+
+
diff --git a/docs/development/overview/overview.rst b/docs/development/overview/overview.rst
index 2b86da3..792d50f 100644
--- a/docs/development/overview/overview.rst
+++ b/docs/development/overview/overview.rst
@@ -9,5 +9,18 @@
Introduction
----------------
-Describing the components and behaviours in a manner that helps people understand the platform and how to work with it
+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
+a path that is common to all NFV applications: external source to top of rack switch(es) to conpute node(s) to vswitch (if applicable)
+to VNF(s) and back.
+Configuration of benchmarks is through a hierarchy of yaml configuraton files 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)
+
+Logging is available in a log file.
+
+Benchmark results and logs can be optionally sent to one or more remote fluentd aggeregators using json format.