From 48761532adf2420d7932149cc0e16c69804e9c16 Mon Sep 17 00:00:00 2001 From: ahothan Date: Mon, 27 Nov 2017 18:43:28 -0800 Subject: Fix docker container to pick VM image 0.5, enhance doc diagrams Add SRIOV packet paths Change-Id: I0f082fd3443e41dec81ab1847726107b07ea9b52 Signed-off-by: ahothan --- docs/testing/user/userguide/advanced.rst | 2 +- docs/testing/user/userguide/faq.rst | 1 + docs/testing/user/userguide/fluentd.rst | 4 + docs/testing/user/userguide/hw_requirements.rst | 2 +- .../user/userguide/images/extchain-config.png | Bin 0 -> 227354 bytes .../user/userguide/images/extchain-config.svg | 239 --------------------- .../userguide/images/nfvbench-all-sriov-pvvp.png | Bin 0 -> 34850 bytes .../user/userguide/images/nfvbench-npvp.png | Bin 0 -> 30328 bytes .../user/userguide/images/nfvbench-npvp.svg | 107 --------- .../testing/user/userguide/images/nfvbench-pvp.png | Bin 0 -> 20770 bytes .../testing/user/userguide/images/nfvbench-pvp.svg | 94 -------- .../user/userguide/images/nfvbench-pvvp-inter.svg | 132 ------------ .../user/userguide/images/nfvbench-pvvp-intra.svg | 114 ---------- .../user/userguide/images/nfvbench-pvvp.png | Bin 0 -> 31338 bytes .../user/userguide/images/nfvbench-pvvp2.png | Bin 0 -> 42583 bytes .../user/userguide/images/nfvbench-sriov-pvp.png | Bin 0 -> 19982 bytes .../user/userguide/images/nfvbench-sriov-pvvp.png | Bin 0 -> 31769 bytes .../user/userguide/images/nfvbench-sriov-pvvp2.png | Bin 0 -> 44101 bytes .../user/userguide/images/nfvbench-trex-setup.png | Bin 0 -> 34090 bytes .../user/userguide/images/nfvbench-trex-setup.svg | 101 --------- docs/testing/user/userguide/quickstart_docker.rst | 2 + docs/testing/user/userguide/readme.rst | 44 ++-- docs/testing/user/userguide/server.rst | 18 +- 23 files changed, 51 insertions(+), 809 deletions(-) create mode 100644 docs/testing/user/userguide/images/extchain-config.png delete mode 100644 docs/testing/user/userguide/images/extchain-config.svg create mode 100644 docs/testing/user/userguide/images/nfvbench-all-sriov-pvvp.png create mode 100644 docs/testing/user/userguide/images/nfvbench-npvp.png delete mode 100644 docs/testing/user/userguide/images/nfvbench-npvp.svg create mode 100644 docs/testing/user/userguide/images/nfvbench-pvp.png delete mode 100644 docs/testing/user/userguide/images/nfvbench-pvp.svg delete mode 100644 docs/testing/user/userguide/images/nfvbench-pvvp-inter.svg delete mode 100644 docs/testing/user/userguide/images/nfvbench-pvvp-intra.svg create mode 100644 docs/testing/user/userguide/images/nfvbench-pvvp.png create mode 100644 docs/testing/user/userguide/images/nfvbench-pvvp2.png create mode 100644 docs/testing/user/userguide/images/nfvbench-sriov-pvp.png create mode 100644 docs/testing/user/userguide/images/nfvbench-sriov-pvvp.png create mode 100644 docs/testing/user/userguide/images/nfvbench-sriov-pvvp2.png create mode 100644 docs/testing/user/userguide/images/nfvbench-trex-setup.png delete mode 100644 docs/testing/user/userguide/images/nfvbench-trex-setup.svg (limited to 'docs/testing') diff --git a/docs/testing/user/userguide/advanced.rst b/docs/testing/user/userguide/advanced.rst index 896affb..252cbc9 100644 --- a/docs/testing/user/userguide/advanced.rst +++ b/docs/testing/user/userguide/advanced.rst @@ -225,7 +225,7 @@ To run NFVbench on such external service chains: - specify the packet source and destination IPs for the virtual devices that are simulated (10.0.0.0/8 and 20.0.0.0/8) -.. image:: images/extchain-config.svg +.. image:: images/extchain-config.png L3 routing must be enabled in the VNF and configured to: diff --git a/docs/testing/user/userguide/faq.rst b/docs/testing/user/userguide/faq.rst index f5ff6b3..7daa8c9 100644 --- a/docs/testing/user/userguide/faq.rst +++ b/docs/testing/user/userguide/faq.rst @@ -38,6 +38,7 @@ This exception means that NFVbench cannot pass any traffic in the service chain. The most common issues that prevent traffic from passing are: - incorrect wiring of the NFVbench/TRex interfaces - 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 diff --git a/docs/testing/user/userguide/fluentd.rst b/docs/testing/user/userguide/fluentd.rst index 889d598..e1ff37f 100644 --- a/docs/testing/user/userguide/fluentd.rst +++ b/docs/testing/user/userguide/fluentd.rst @@ -20,6 +20,7 @@ running at localhost:9200. .. code-block:: bash + @type copy @@ -40,6 +41,7 @@ under NFVbench configuration), and storage backend is elasticsearch which is running at localhost:9200. .. code-block:: bash + @type copy @@ -77,6 +79,7 @@ An example of configuration for Fluentd working at 127.0.0.1:24224 and tags for and result is resultnfvbench .. code-block:: bash + fluentd: # by default (logging_tag is empty) nfvbench log messages are not sent to fluentd # to enable logging to fluents, specify a valid fluentd tag name to be used for the @@ -126,6 +129,7 @@ For each packet size and rate a result record is sent. Users can label those res --user-label parameter to NFVbench run .. code-block::bash + nfvbench --rate 1% --user-label nfvbench-label And the results of this command obtained from fluentd by elasticsearch: diff --git a/docs/testing/user/userguide/hw_requirements.rst b/docs/testing/user/userguide/hw_requirements.rst index 29fcd5c..1ebb19e 100644 --- a/docs/testing/user/userguide/hw_requirements.rst +++ b/docs/testing/user/userguide/hw_requirements.rst @@ -20,7 +20,7 @@ To run the TRex traffic generator (that is bundled with NFVbench) you will need - if you have only 1 TOR, wire both interfaces to that same TOR - 1 interface to each TOR if you have 2 TORs and want to use bonded links to your compute nodes -.. image:: images/nfvbench-trex-setup.svg +.. image:: images/nfvbench-trex-setup.png Switch Configuration diff --git a/docs/testing/user/userguide/images/extchain-config.png b/docs/testing/user/userguide/images/extchain-config.png new file mode 100644 index 0000000..2fd39ba Binary files /dev/null and b/docs/testing/user/userguide/images/extchain-config.png differ diff --git a/docs/testing/user/userguide/images/extchain-config.svg b/docs/testing/user/userguide/images/extchain-config.svg deleted file mode 100644 index e519946..0000000 --- a/docs/testing/user/userguide/images/extchain-config.svg +++ /dev/null @@ -1,239 +0,0 @@ - - - - Produced by OmniGraffle 7.4.1 - 2017-08-08 22:08:48 +0000 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ext chain - - pvvp-intra - - - - - - - - - - traffic generator - - - - - - - SERVICE CHAIN - - - - - - - - DC-S - W - - - - - - - - - - - L3 - VNF - - - - - gwA - - - - - - - gwB - - - - right public IP - 2.2.0.2 - - - right virtual devices - - - - static routes: - 20.0.0.0/8 gw 2.2.0.102 - 10.0.0.0/8 gw 1.1.0.102 - - - - right virtual gateway - 2.2.0.102 - - - - - - - - - - 20.0.0.0/8 - devices - - - - - - - - - 10.0.0.0/8 - devices - - - ’marin’ - service chain left network - 1.1.0.0/24 - - - - ‘napa’ - service chain right network - 2.2.0.0/24 - - - - left public IP - 1.1.0.2 - - - - left virtual gateway - 1.1.0.102 - - - - left virtual devices - - - - nfvbench configuration file: - - - traffic_generator: - ip_addrs: ['10.0.0.0/8', '20.0.0.0/8'] - tg_gateway_ip_addrs: ['1.1.0.102’, '2.2.0.102’] - gateway_ip_addrs: ['1.1.0.2', '2.2.0.2'] - - - - - - - internal_networks: - left: - name: ‘marin’ - subnet: 'nfvbench-subnet0' - cidr: ‘1.1.0.0/24' - network_type: 'vlan' - segmentation_id: - physical_network: - right: - name: ‘napa’ - subnet: 'nfvbench-subnet1' - cidr: ’2.2.0.0/24' - network_type: 'vlan' - segmentation_id: - physical_network: - - - - - diff --git a/docs/testing/user/userguide/images/nfvbench-all-sriov-pvvp.png b/docs/testing/user/userguide/images/nfvbench-all-sriov-pvvp.png new file mode 100644 index 0000000..d7b1cbb Binary files /dev/null and b/docs/testing/user/userguide/images/nfvbench-all-sriov-pvvp.png differ diff --git a/docs/testing/user/userguide/images/nfvbench-npvp.png b/docs/testing/user/userguide/images/nfvbench-npvp.png new file mode 100644 index 0000000..53d7b00 Binary files /dev/null and b/docs/testing/user/userguide/images/nfvbench-npvp.png differ diff --git a/docs/testing/user/userguide/images/nfvbench-npvp.svg b/docs/testing/user/userguide/images/nfvbench-npvp.svg deleted file mode 100644 index f72af34..0000000 --- a/docs/testing/user/userguide/images/nfvbench-npvp.svg +++ /dev/null @@ -1,107 +0,0 @@ - - - - Produced by OmniGraffle 7.2 - 2016-11-13 19:58:51 +0000 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - nfvbench-flows 2 - - pvvp-intra - - N single VNF c - hains - (N x PVP - , N=2) - - - - nxpvp - - - - - - - - - - DC-S - W - - - - - - - Com - put - e node - - - - - - vswitc - h - - - - - VNF1 - - - - - VNF2 - - - - - NIC - - - - - - - - tr - affi - c - gener - at - or - - - - - diff --git a/docs/testing/user/userguide/images/nfvbench-pvp.png b/docs/testing/user/userguide/images/nfvbench-pvp.png new file mode 100644 index 0000000..b460beb Binary files /dev/null and b/docs/testing/user/userguide/images/nfvbench-pvp.png differ diff --git a/docs/testing/user/userguide/images/nfvbench-pvp.svg b/docs/testing/user/userguide/images/nfvbench-pvp.svg deleted file mode 100644 index e023b1f..0000000 --- a/docs/testing/user/userguide/images/nfvbench-pvp.svg +++ /dev/null @@ -1,94 +0,0 @@ - - - - Produced by OmniGraffle 7.2 - 2016-11-13 19:58:51 +0000 - - - - - - - - - - - - - - - - - - - - - - - - - - nfvbench-flows 2 - - pvvp-intra - - single VNF c - hain (PVP) - - - - pvp - - - - - - - - - - Com - put - e node - - - - - - NIC - - - - - - DC-S - W - - - - - - vswitc - h - - - - - VNF - - - - - - - tr - affi - c - gener - at - or - - - - - diff --git a/docs/testing/user/userguide/images/nfvbench-pvvp-inter.svg b/docs/testing/user/userguide/images/nfvbench-pvvp-inter.svg deleted file mode 100644 index 3371346..0000000 --- a/docs/testing/user/userguide/images/nfvbench-pvvp-inter.svg +++ /dev/null @@ -1,132 +0,0 @@ - - - - Produced by OmniGraffle 7.2 - 2016-11-13 19:58:51 +0000 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - nfvbench-flows 2 - - pvvp-intra - - - - - - 2- - VNF c - hain - (int - er - -node PVVP) - - - - - - Com - put - e node A - - - - - - - Com - put - e node B - - - - - pvv-inter - - - - - - - - NIC - - - - - - DC-S - W - - - - - - vswitc - h - - - - - VNF1a - - - - - VNF1b - - - - - NIC - - - - - vswitc - h - - - - - - - - tr - affi - c - gener - at - or - - - - - diff --git a/docs/testing/user/userguide/images/nfvbench-pvvp-intra.svg b/docs/testing/user/userguide/images/nfvbench-pvvp-intra.svg deleted file mode 100644 index 6c454b2..0000000 --- a/docs/testing/user/userguide/images/nfvbench-pvvp-intra.svg +++ /dev/null @@ -1,114 +0,0 @@ - - - - Produced by OmniGraffle 7.2 - 2016-11-13 19:58:51 +0000 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - nfvbench-flows 2 - - pvvp-intra - - - - - - - - Com - put - e node - - - - - - NIC - - - - - - DC-S - W - - - - - - vswitc - h - - - - - VNF1a - - - - - VNF1b - - - 2- - VNF c - hain (PVVP) - - - - - - - tr - affi - c - gener - at - or - - - - - pvp - - - - diff --git a/docs/testing/user/userguide/images/nfvbench-pvvp.png b/docs/testing/user/userguide/images/nfvbench-pvvp.png new file mode 100644 index 0000000..d412b20 Binary files /dev/null and b/docs/testing/user/userguide/images/nfvbench-pvvp.png differ diff --git a/docs/testing/user/userguide/images/nfvbench-pvvp2.png b/docs/testing/user/userguide/images/nfvbench-pvvp2.png new file mode 100644 index 0000000..94f84de Binary files /dev/null and b/docs/testing/user/userguide/images/nfvbench-pvvp2.png differ diff --git a/docs/testing/user/userguide/images/nfvbench-sriov-pvp.png b/docs/testing/user/userguide/images/nfvbench-sriov-pvp.png new file mode 100644 index 0000000..7faec17 Binary files /dev/null and b/docs/testing/user/userguide/images/nfvbench-sriov-pvp.png differ diff --git a/docs/testing/user/userguide/images/nfvbench-sriov-pvvp.png b/docs/testing/user/userguide/images/nfvbench-sriov-pvvp.png new file mode 100644 index 0000000..5faf8b2 Binary files /dev/null and b/docs/testing/user/userguide/images/nfvbench-sriov-pvvp.png differ diff --git a/docs/testing/user/userguide/images/nfvbench-sriov-pvvp2.png b/docs/testing/user/userguide/images/nfvbench-sriov-pvvp2.png new file mode 100644 index 0000000..f0c1e93 Binary files /dev/null and b/docs/testing/user/userguide/images/nfvbench-sriov-pvvp2.png differ diff --git a/docs/testing/user/userguide/images/nfvbench-trex-setup.png b/docs/testing/user/userguide/images/nfvbench-trex-setup.png new file mode 100644 index 0000000..6268068 Binary files /dev/null and b/docs/testing/user/userguide/images/nfvbench-trex-setup.png differ diff --git a/docs/testing/user/userguide/images/nfvbench-trex-setup.svg b/docs/testing/user/userguide/images/nfvbench-trex-setup.svg deleted file mode 100644 index a313916..0000000 --- a/docs/testing/user/userguide/images/nfvbench-trex-setup.svg +++ /dev/null @@ -1,101 +0,0 @@ - - - - Produced by OmniGraffle 7.5 - 2017-11-04 10:05:35 +0000 - - - - - - - - - - - - - - - - - - - - nfvbench-trex-setup - - Layer 1 - - - - - - Linux Server (x86_64) - - - - - NFVbench - - - - - Compute node 1 - - - - - In - t - el - X710 - NIC - - - - - - Controller/storage - nodes - - - - - TOR B - - - - - Compute node N - - - NFVi pod - - - - - - TOR A - - - - - - Layer 3 - - trunk mode - if only 1 T - OR s - wit - ch, c - onnect both link - s t - o same T - OR - - - 2x10G or higher ports - - - - diff --git a/docs/testing/user/userguide/quickstart_docker.rst b/docs/testing/user/userguide/quickstart_docker.rst index 0ab657c..2bd8f4c 100644 --- a/docs/testing/user/userguide/quickstart_docker.rst +++ b/docs/testing/user/userguide/quickstart_docker.rst @@ -50,6 +50,7 @@ The NFVbench container requires the following Docker options to operate properly +------------------------------------------------------+------------------------------------------------------+ | -e CONFIG_FILE="/root/nfvbenchconfig.json | (optional) required if REST server is enabled | +------------------------------------------------------+------------------------------------------------------+ + It can be convenient to write a shell script (or an alias) to automatically insert the necessary options. The minimal configuration file required must specify the openrc file to use (using in-container path), the PCI addresses of the 2 NIC ports to use @@ -60,6 +61,7 @@ the openrc file is located on the host current directory which is mapped under / the 2 NIC ports to use for generating traffic have the PCI addresses "04:00.0" and "04:00.1" .. code-block:: bash + { "openrc_file": "/tmp/nfvbench/openrc", "traffic_generator": { diff --git a/docs/testing/user/userguide/readme.rst b/docs/testing/user/userguide/readme.rst index 17ce889..9d3c915 100644 --- a/docs/testing/user/userguide/readme.rst +++ b/docs/testing/user/userguide/readme.rst @@ -14,7 +14,7 @@ NFVbench supports the following main measurement capabilities: - *fixed rate* mode to generate traffic at a fixed rate for a fixed duration - NDR (No Drop Rate) and PDR (Partial Drop Rate) measurement mode - configurable frame sizes (any list of fixed sizes or 'IMIX') -- built-in packet paths +- built-in packet paths (PVP, PVVP) - built-in loopback VNFs based on fast L2 or L3 forwarders running in VMs - configurable number of flows and service chains - configurable traffic direction (single or bi-directional) @@ -96,7 +96,7 @@ PVP Packet Path This packet path represents a single service chain with 1 loopback VNF and 2 Neutron networks: -.. image:: images/nfvbench-pvp.svg +.. image:: images/nfvbench-pvp.png PVVP Packet Path @@ -105,12 +105,11 @@ PVVP Packet Path This packet path represents a single service chain with 2 loopback VNFs in sequence and 3 Neutron networks. The 2 VNFs can run on the same compute node (PVVP intra-node): -.. image:: images/nfvbench-pvvp-intra.svg +.. image:: images/nfvbench-pvvp.png or on different compute nodes (PVVP inter-node) based on a configuration option: -.. image:: images/nfvbench-pvvp-inter.svg - +.. image:: images/nfvbench-pvvp2.png Multi-Chaining (N*PVP or N*PVVP) @@ -121,20 +120,45 @@ In the case of multiple service chains, NFVbench will instruct the traffic gener Example of multi-chaining with 2 concurrent PVP service chains: -.. image:: images/nfvbench-npvp.svg +.. image:: images/nfvbench-npvp.png This innovative feature will allow to measure easily the performance of a fully loaded compute node running multiple service chains. Multi-chaining is currently limited to 1 compute node (PVP or PVVP intra-node) or 2 compute nodes (for PVVP inter-node). The 2 edge interfaces for all service chains will share the same 2 networks. +SR-IOV +^^^^^^ + +By default, service chains will be based on virtual switch interfaces. + +NFVbench provides an option to select SR-IOV based virtual interfaces instead (thus bypassing any virtual switch) for those OpenStack system that include and support SR-IOV capable NICs on compute nodes. + +The PVP packet path will bypass the virtual switch completely when the SR-IOV option is selected: + +.. image:: images/nfvbench-sriov-pvp.png + +The PVVP packet path will use SR-IOV for the left and right networks and the virtual switch for the middle network by default: + +.. image:: images/nfvbench-sriov-pvvp.png + +Or in the case of inter-node: + +.. image:: images/nfvbench-sriov-pvvp2.png + +This packet path is a good way to approximate VM to VM (V2V) performance (middle network) given the high efficiency of the left and right networks. The V2V throughput will likely be very close to the PVVP throughput while its latency will be very close to the difference between the SR-IOV PVVP latency and the SR-IOV PVP latency. + +It is possible to also force the middle network to use SR-IOV (in this version, the middle network is limited to use the same SR-IOV phys net): + +.. image:: images/nfvbench-all-sriov-pvvp.png + Other Misc Packet Paths ^^^^^^^^^^^^^^^^^^^^^^^ P2P (Physical interface to Physical interface - no VM) can be supported using the external chain/L2 forwarding mode. -V2V (VM to VM) is not supported but PVVP provides a more complete (and mroe realistic) alternative. +V2V (VM to VM) is not supported but PVVP provides a more complete (and more realistic) alternative. Supported Neutron Network Plugins and vswitches @@ -149,12 +173,6 @@ NFVbench is agnostic of the virtual switch implementation and has been tested wi - OVS/VLAN and OVS-DPDK/VLAN - ML2/ODL/VPP (OPNFV Fast Data Stack) -SR-IOV -^^^^^^ - -By default, service chains will be based on virtual switch interfaces. - -NFVbench provides an option to select SR-IOV based virtual interfaces instead (thus bypassing any virtual switch) for those OpenStack system that include and support SR-IOV capable NICs on compute nodes. diff --git a/docs/testing/user/userguide/server.rst b/docs/testing/user/userguide/server.rst index 1c1e052..70c5fdd 100644 --- a/docs/testing/user/userguide/server.rst +++ b/docs/testing/user/userguide/server.rst @@ -44,11 +44,15 @@ HTTP Interface This request simply returns whatever content is sent in the body of the request (body should be in json format, only used for testing) -Example request: curl -XGET '127.0.0.1:7556/echo' -H "Content-Type: application/json" -d '{"nfvbench": "test"}' -Response: -{ - "nfvbench": "test" -} +Example request: + +.. code-block:: bash + + curl -XGET '127.0.0.1:7556/echo' -H "Content-Type: application/json" -d '{"nfvbench": "test"}' + Response: + { + "nfvbench": "test" + } /status (GET) @@ -82,7 +86,7 @@ Example of return when the run completes: /start_run (POST) -^^^^^^^^^^^^^^^^^^^^^ +^^^^^^^^^^^^^^^^^^^^^^^^^^^ This request starts an NFVBench run with passed configurations. If no configuration is passed, a run with default configurations will be executed. @@ -101,7 +105,7 @@ Example of return when the submission is successful: "status": "PENDING" } -If there is already an NFVBench running then it will return +If there is already an NFVBench running then it will return: .. code-block:: bash -- cgit 1.2.3-korg