2.0 beta NFVBENCH-91 Allow multi-chaining with separate edge networks
[nfvbench.git] / docs / development / design / design.rst
1
2
3 .. contents::
4    :depth: 3
5    :local:
6
7 .. This work is licensed under a Creative Commons Attribution 4.0 International
8 .. License.
9 .. http://creativecommons.org/licenses/by/4.0
10 .. (c) Cisco Systems, Inc
11
12
13 Introduction
14 ------------
15
16 NFVbench can be decomposed in the following components:
17 - Configuration
18 - Staging
19 - Traffic generation
20 - Traffic generator results analysis
21
22 Configuration
23 -------------
24 This component is in charge of getting the configuration options from the user and consolidate them with
25 the default configuration into a running configuration.
26
27 default configuration + user configuration options = running configuration
28
29 User configuration can come from:
30 - CLI configuration shortcut arguments (e.g --frame-size)
31 - CLI configuration file (--config [file])
32 - CLI configuration string (--config [string])
33 - REST request body
34 - custom platform pluging
35
36 The precedence order for configuration is (from highest precedence to lowest precedence)
37 - CLI confguration or REST configuration
38 - custom platform plugin
39 - default configuration
40
41 The custom platform plugin is an optional python class that can be used to override default configuration options
42 with default platform options which can be either hardcoded or calculated at runtime from platform specific sources
43 (such as platform deployment configuration files).
44 A custom platform plugin class is a child of the parent class nfvbench.config_plugin.ConfigPlugin.
45
46
47 Staging
48 -------
49 The staging component is in charge of staging the OpenStack resources that are used for the requested packet path.
50 For example, for a PVP packet path, this module will create 2 Neutron networks and one VM instance connected to these 2 networks.
51 Multi-chaining and VM placement is also handled by this module.
52
53 Main class: nfvbench.chaining.ChainManager
54
55 Traffic Generation
56 ------------------
57 The traffic generation component is in charge of contrilling the TRex traffic generator using its python API.
58 It includes tasks such as:
59 - traffic check end to end to make sure the packet path is clear in both directions before starting a benchmark
60 - programming the Trex traffic flows based on requested parameters
61 - fixed rate control
62 - NDR/PDR binary search
63
64 Main class: nfvbench.traffic_client.TrafficClient
65
66
67 Traffic Generator Results Analysis
68 ----------------------------------
69 At the end of a traffic generation session, this component collects the results from TRex and packages them in a format that
70 is suitable for the various output formats (JSON, REST, file, fluentd).
71 In the case of multi-chaining, it handles aggregation of results across chains.
72
73 Main class: nfvbench.stats_manager.StatsManager