From 0ab04ab7103fc4bfb17042b60c1e005049375cc2 Mon Sep 17 00:00:00 2001 From: ahothan Date: Tue, 8 Aug 2017 16:24:56 -0700 Subject: Update doc with ndr/pdr section, update config comment Change-Id: I2e0a771b21371f45fd592ff41dc8f66c0aaeb7e0 Signed-off-by: ahothan --- docs/development/design/index.rst | 3 +- docs/development/design/ndrpdr.rst | 29 ++++ docs/development/index.rst | 2 +- docs/testing/user/userguide/advanced.rst | 7 +- .../user/userguide/images/extchain-config.svg | 150 ++++++++++++--------- docs/testing/user/userguide/sriov.rst | 9 +- nfvbench/cfg.default.yaml | 11 +- 7 files changed, 134 insertions(+), 77 deletions(-) create mode 100644 docs/development/design/ndrpdr.rst diff --git a/docs/development/design/index.rst b/docs/development/design/index.rst index 22e79d9..a8093cb 100644 --- a/docs/development/design/index.rst +++ b/docs/development/design/index.rst @@ -5,6 +5,7 @@ OPNFV NFVbench Euphrates Design ============================================= .. toctree:: - :maxdepth: 1 + :maxdepth: 2 design + ndrpdr diff --git a/docs/development/design/ndrpdr.rst b/docs/development/design/ndrpdr.rst new file mode 100644 index 0000000..f748476 --- /dev/null +++ b/docs/development/design/ndrpdr.rst @@ -0,0 +1,29 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International +.. License. +.. http://creativecommons.org/licenses/by/4.0 +.. (c) Cisco Systems, Inc + +NDR/PDR Binary Search +===================== + +Algorithm Outline +----------------- + +The ServiceChain class is responsible for calculating the NDR/PDR for all frame sizes requested in the configuration. +Calculation for 1 frame size is delegated to the TrafficClient class. + +Call chain for calculating the NDR-PDR for a list of frame sizes: + +- ServiceChain.run() + - ServiceChain._get_chain_results() + - for every frame size: + - ServiceChain.__get_result_per_frame_size() + - TrafficClient.get_ndr_pdr() + - TrafficClient.__range_search() recursive binary search + +The search range is delimited by a left and right rate (expressed as a % of line rate per direction). + +The recursion narrows down the range by half and stops when: +- the range is smaller than the configured load_epsilon value +- or when the search hits 100% or 0% of line rate + diff --git a/docs/development/index.rst b/docs/development/index.rst index 1dd34cc..1db91e7 100644 --- a/docs/development/index.rst +++ b/docs/development/index.rst @@ -4,7 +4,7 @@ .. (c) Cisco Systems, Inc .. toctree:: - :maxdepth: 1 + :maxdepth: 3 overview/index design/index diff --git a/docs/testing/user/userguide/advanced.rst b/docs/testing/user/userguide/advanced.rst index bfffa24..6823cb1 100644 --- a/docs/testing/user/userguide/advanced.rst +++ b/docs/testing/user/userguide/advanced.rst @@ -323,9 +323,9 @@ The nfvbench_cleanup script will cleanup resources created by NFVbench. You need OpenStack. Example of run: -.. code-block:: bash +.. code-block:: none - nfvbench_9425 [root@c45-build /]# nfvbench_cleanup -r /tmp/nfvbench/openrc + # nfvbench_cleanup -r /tmp/nfvbench/openrc Discovering Storage resources... Discovering Compute resources... Discovering Network resources... @@ -358,5 +358,4 @@ Example of run: + Network port cc2d8f1b-49fe-491e-9e44-6990fc57e891 is successfully deleted + NETWORK nfvbench-net1 is successfully deleted *** KEYSTONE cleanup - nfvbench_9425 [root@c45-build /]# - + # diff --git a/docs/testing/user/userguide/images/extchain-config.svg b/docs/testing/user/userguide/images/extchain-config.svg index 4e3db47..e519946 100644 --- a/docs/testing/user/userguide/images/extchain-config.svg +++ b/docs/testing/user/userguide/images/extchain-config.svg @@ -1,8 +1,8 @@ - - Produced by OmniGraffle 7.3 - 2017-03-31 20:15:29 +0000 + + Produced by OmniGraffle 7.4.1 + 2017-08-08 22:08:48 +0000 @@ -56,11 +56,21 @@ + + + + + + + + + + @@ -85,14 +95,14 @@ - traffic generator + traffic generator - - - - SERVICE CHAIN + + + + SERVICE CHAIN @@ -107,13 +117,13 @@ - - - - - - L3 - VNF + + + + + + L3 + VNF @@ -128,26 +138,25 @@ gwB - - right public IP - 2.2.0.2 + + right public IP + 2.2.0.2 - - - right virtual devices + + 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 + 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 + + + right virtual gateway + 2.2.0.102 - + @@ -169,51 +178,62 @@ devices - ’marin’ - service chain left network - 1.1.0.0/24 + ’marin’ + service chain left network + 1.1.0.0/24 - - ‘napa’ - service chain right network - 2.2.0.0/24 + + ‘napa’ + service chain right network + 2.2.0.0/24 - - - left public IP - 1.1.0.2 + + + left public IP + 1.1.0.2 - - - left virtual gateway - 1.1.0.102 + + + left virtual gateway + 1.1.0.102 - - left virtual devices + + left virtual devices - - nfvbenc - h confi - g fi - le: + + nfvbench configuration file: - internal_network_name: [‘marin', ‘napa'] - traffic_generator: - ip_addrs: ['10.0.0.0/8', '20.0.0.0/8'] - ip_addrs_step: 0.0.0.1 - tg_gateway_ip_addrs: ['1.1.0.102’, '2.2.0.102’] - tg_gateway_ip_addrs_step: 0.0.0.1 - gateway_ip_addrs: ['1.1.0.2', '2.2.0.2'] - gateway_ip_addrs_step: 0.0.0.1 - - - - - + 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/sriov.rst b/docs/testing/user/userguide/sriov.rst index c63a6d7..2efb495 100644 --- a/docs/testing/user/userguide/sriov.rst +++ b/docs/testing/user/userguide/sriov.rst @@ -15,7 +15,8 @@ You will also need to know: - the name of the physical networks associated to your SR-IOV interfaces (this is a configuration in Nova compute) - the VLAN range that can be used on the switch ports that are wired to the SR-IOV ports. Such switch ports are normally configured in trunk mode with a range of VLAN ids enabled on that port -For example, in the case of 2 SR-IOV ports per compute node, 2 physical networks are generally configured in OpenStack with a distinct name. The VLAN range to use is is also allocated and reserved by the network administrator and in coordination with the corresponding top of rack switch port configuration. +For example, in the case of 2 SR-IOV ports per compute node, 2 physical networks are generally configured in OpenStack with a distinct name. +The VLAN range to use is is also allocated and reserved by the network administrator and in coordination with the corresponding top of rack switch port configuration. Configuration @@ -24,7 +25,7 @@ To enable SR-IOV test, you will need to provide the following configuration opti This example instructs NFVbench to create the left and right networks of a PVP packet flow to run on 2 SRIOV ports named "phys_sriov0" and "phys_sriov1" using resp. segmentation_id 2000 and 2001: .. code-block:: bash - + internal_networks: left: segmentation_id: 2000 @@ -56,5 +57,7 @@ If the 2 selected ports reside on NICs that are on different NUMA sockets, you w "hw:mem_page_size": large "hw:numa_nodes": 2 -Failure to do so might cause the VM creation to fail with the Nova error "Instance creation error: Insufficient compute resources: Requested instance NUMA topology together with requested PCI devices cannot fit the given host NUMA topology." +Failure to do so might cause the VM creation to fail with the Nova error +"Instance creation error: Insufficient compute resources: +Requested instance NUMA topology together with requested PCI devices cannot fit the given host NUMA topology." diff --git a/nfvbench/cfg.default.yaml b/nfvbench/cfg.default.yaml index 8766d53..a462383 100644 --- a/nfvbench/cfg.default.yaml +++ b/nfvbench/cfg.default.yaml @@ -330,7 +330,7 @@ duration_sec: 60 # Can be overridden by --interval interval_sec: 10 -# NDR / PDR configuration ZZ +# NDR / PDR configuration measurement: # Drop rates represent the ratio of dropped packet to the total number of packets sent. # Values provided here are percentages. A value of 0.01 means that at most 0.01% of all @@ -340,8 +340,13 @@ measurement: NDR: 0.001 # Partial Drop Rate in percentage; NDR should always be less than PDR PDR: 0.1 - # The accuracy of NDR and PDR load percentiles; The actual load percentile that match NDR - # or PDR should be within `load_epsilon` difference than the one calculated. + # The accuracy of NDR and PDR as a percnetage of line rate; The exact NDR + # or PDR should be within `load_epsilon` line rate % from the one calculated. + # For example, with a value 0.1, and a line rate of 10Gbps, the accuracy + # of NDR and PDR will be within 0.1% Of 10Gbps or 10Kbps. + # The lower the value the more iterations and the longer it will take to find the NDR/PDR. + # In practice, due to the precision of the traffic generator it is not recommended to + # set it to lower than 0.1 load_epsilon: 0.1 # Location where to store results in a JSON format. Must be container specific path. -- cgit 1.2.3-korg