diff options
authorahothan <ahothan@cisco.com>2017-10-18 10:43:09 -0700
committerahothan <ahothan@cisco.com>2017-10-20 00:37:14 -0700
commitb01bb43efe2e65d89d2a0488c87126af03a606e1 (patch)
parent152d3f49f8208adc1d0b37d41356163ca65fe0ca (diff)
Add dev section to doc
Change-Id: I1e8d4a3fa6be7305c89fbc28b31377ec0f9d51a2 Signed-off-by: ahothan <ahothan@cisco.com>
5 files changed, 110 insertions, 8 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
+.. This work is licensed under a Creative Commons Attribution 4.0 International
+.. License.
+.. http://creativecommons.org/licenses/by/4.0
+.. (c) Cisco Systems, Inc
+NFVbench can be decomposed in the following components:
+- Configuration
+- Staging
+- Traffic generation
+- Traffic generator results analysis
+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.
+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
+ versioning
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
+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 @@
-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.
diff --git a/requirements-dev.txt b/requirements-dev.txt
index e855161..8c1bf66 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -1,8 +1,8 @@
-r requirements.txt