Add dev section to doc 11/46011/1
authorahothan <ahothan@cisco.com>
Wed, 18 Oct 2017 17:43:09 +0000 (10:43 -0700)
committerahothan <ahothan@cisco.com>
Fri, 20 Oct 2017 07:37:14 +0000 (00:37 -0700)
Change-Id: I1e8d4a3fa6be7305c89fbc28b31377ec0f9d51a2
Signed-off-by: ahothan <ahothan@cisco.com>
docs/development/design/design.rst
docs/development/design/index.rst
docs/development/design/versioning.rst [new file with mode: 0644]
docs/development/overview/overview.rst
requirements-dev.txt

index 6717fd7..d0f2f45 100644 (file)
@@ -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
index a8093cb..c54888a 100644 (file)
@@ -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 (file)
index 0000000..870ed86
--- /dev/null
@@ -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.
+
+
+
+
+
+
index 2b86da3..792d50f 100644 (file)
@@ -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.
index e855161..8c1bf66 100644 (file)
@@ -1,8 +1,8 @@
 -r requirements.txt
-docutils==0.12.0
+docutils==0.14.0
 flake8>=2.3.0
 pylint>=1.3
 pep8>=1.5.7
 sphinx>=1.4.0
-sphinx_rtd_theme>=0.1.9
-tox>=1.9.0
+sphinx_rtd_theme>=0.2.4
+tox>=2.3.0