summaryrefslogtreecommitdiffstats
path: root/docs/development/design/ndrpdr.rst
diff options
context:
space:
mode:
authorahothan <ahothan@cisco.com>2017-08-08 16:24:56 -0700
committerahothan <ahothan@cisco.com>2017-08-08 17:48:09 -0700
commit0ab04ab7103fc4bfb17042b60c1e005049375cc2 (patch)
treebee0d88a07889fa57c7f44ca3ce7a839ab05ec53 /docs/development/design/ndrpdr.rst
parent2d66234fe3b8b3e104e63218b5120a35ca400ea5 (diff)
Update doc with ndr/pdr section, update config comment
Change-Id: I2e0a771b21371f45fd592ff41dc8f66c0aaeb7e0 Signed-off-by: ahothan <ahothan@cisco.com>
Diffstat (limited to 'docs/development/design/ndrpdr.rst')
-rw-r--r--docs/development/design/ndrpdr.rst29
1 files changed, 29 insertions, 0 deletions
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
+