informative:
RFC5180:
-# Comment: This part before first --- is not markdown but YAML, so comments need different escape.
-#{::comment}
-#
-# MB116: Please move to information, as this was provided only as an example.
-#
-# VP: Ok.
-#
-# MK: Moved.
-#
-#{:/comment}
RFC6349:
RFC6985:
RFC8219:
-#{::comment}
-#
-# MB117: Idem as the other entry.
-#
-# VP: Ok.
-#
-# MK: Moved.
-#
-#{:/comment}
TST009:
target: https://www.etsi.org/deliver/etsi_gs/NFV-TST/001_099/009/03.04.01_60/gs_NFV-TST009v030401p.pdf
title: "TST 009"
Lencze-Shima:
target: https://datatracker.ietf.org/doc/html/draft-lencse-bmwg-rfc2544-bis-00
title: "An Upgrade to Benchmarking Methodology for Network Interconnect Devices - expired"
-#{::comment}
-#
-# MB118: This was expired since 2020. Please remove. Idem for all similar entries
-#
-# VP: Hmm, ok.
-#
-# MK: Disagree. It is still a useful reference. Marking as expired,
-# but keeping it here. Can we add following entry:
-#
-# [Lencze-Shima] Lencse, G., "Benchmarking Methodology for IP
-# Forwarding Devices - RFC 2544bis", Work in Progress,
-# Internet-Draftdraft-lencse-bmwg-rfc2544-bis-009 March 2015.
-# (Expired.)
-#
-# VP: DONE201: Delete or update or replace the active item.
-#
-#{:/comment}
Lencze-Kovacs-Shima:
target: http://dx.doi.org/10.11601/ijates.v9i2.288
title: "Gaming with the Throughput and the Latency Benchmarking Measurement Procedures of RFC 2544"
support multiple loss ratio searches, and improve result repeatability
and comparability.
-{::comment}
-
- MB2: The abstract should self-contained. Hence the need to expand the RFC title.
-
- VP: Ok.
-
- MK: Ok. Edited.
-
-{:/comment}
-
-{::comment}
-
- MB1: This may trigger automatically a comment whether we change (update or amend) any of RFC2544 text.
- Do we?
-
- VP: Pending BMWG decision.
- VP: For draft11: Officially independent.
-
- MK: MLRsearch extends RFC2544. Does not change it, nor does it amend it.
-
- VP: The idea was to extend in sense of adding one new benchmark.
- But as we added more requirements and possible deviations around trials,
- the new methodology is independent from (while possible to combine with) RFC2544.
-
- MK: LGTM.
-
-{:/comment}
-
MLRsearch is motivated by the pressing need to address the challenges of
evaluating and testing the various data plane solutions, especially in
software- based networking systems based on Commercial Off-the-Shelf
(COTS) CPU hardware vs purpose-built ASIC / NPU / FPGA hardware.
-{::comment}
-
- MB3: What is meant here? What is specific to these systems?
- Do we need to have this mention at this stage?
-
- VP: Do not distinguish in abstract
-
- MK: Updated text to focus on COTS hardware vs purpose-built
- hardware. Let us know if this requires further text in abstract.
- (We should keep it concise.)
-
-{:/comment}
-
-{::comment}
-
- MB4: Too detailed for an abstract. Can be mentioned in an overview/introduction section
-
- VP: Agreed, we no not need to list the options here.
-
- MK: OK.
- MK: Removed.
-
-{:/comment}
-
--- middle
{::comment}
## Purpose
-{::comment}
-
- MK: Suggest to change title to Purpose, as it does not provide
- brief overview of the document's structure and key content areas.
-
- VP: Done.
-
-{:/comment}
-
The purpose of this document is to describe the Multiple Loss Ratio search
(MLRsearch) methodology, optimized for determining
data plane throughput in software-based networking devices and functions.
-{::comment}
-
- MB6: Should be defined.
- Not sure what is specific as any networking device is a software-based device. Even hardware, it is not more than frozen software ;)
-
- VP: We can mention "noisiness" here, not sure how detailed
-
- MK: Good point. Added text clarifying the difference. See if this
- is good enough, or does this need any more explanation.
- MK: Edited.
-
-{:/comment}
-
Applying the vanilla throughput binary search,
as specified for example in [TST009] and [RFC2544]
to software devices under test (DUTs) results in several problems:
-{::comment}
-
- MB7: Can we have an explicit reference for the method?
-
- VP: Need to search but should be doable
-
- MK: RFC2544 mentions binary-search style procedure without fully
- specifying the algorithm. The only other standard that defines is
- ETSI GS NFV-TST 009 - adding it here.
- MK: Edited.
-
- VP: Removed RFC 2544 as I understand MB wants reference to specifics.
-
- MK: But section 24 of RFC 2544 does list "binary search", and it is
- this that has been adopted as a defacto standard. Re-adding it back
- in :)
-
-{:/comment}
-
-{::comment}
-
- MB8: Expand
-
- VP: Ok (point to DUT).
-
- MK: Edited.
-
-{:/comment}
-
- Binary search takes long as most trials are done far from the
eventually found throughput.
- The required final trial duration and pauses between trials
throughput metric can no longer be pinned to a single, unambiguous
value.)
-{::comment}
-
- MB9: Can we have a public reference to share here?
-
- VP: Need to search but should be doable).
-
- MK: Removed "too". Explanation and public references are provided
- in the Identified Problems section.
- MK: Edited.
-
-{:/comment}
-
-{::comment}
-
- MB10: What is meant there?
-
- VP: Expand (industry).
-
- MK: Improved clarity, by referring to loss tolerance. Added references.
- MK: Edited.
-
-{:/comment}
-
-{::comment}
-
- MB11: Can we expand on this one?
-
- VP: Some soft intro to inconsistent trials may be needed here.
-
- MK: Added text in brackets. See if it is sufficient.
- MK: Edited.
-
-{:/comment}
-
To address these problems,
early MLRsearch implementations employed the following enhancements:
5. Apply several time-saving load selection heuristics that deliberately
prevent the bounds from narrowing unnecessarily.
-{::comment}
-
- MB12: There is no such section in the document.
- Do you meant Section 3.6.2 of [RFC2285]?
- If so, please update accordingly.
- Idem for all similar occurrences in the document. Thanks.
-
- VP: Clarify. Check for every external section referenced.
-
- MK: Yes Section 3.6.2 of [RFC2285] defining FRMOL.
- MK: Edited.
-
-{:/comment}
-
-{::comment}
-
- MB13: Maximizing means?
-
- VP: Reformulate.
-
- MK: Edited.
-
-{:/comment}
-
-{::comment}
-
- VP: Item 3 is also mostly out of scope,
- if we do not count Goal Initial Trial Duration
- (it is and example of optional attribute, not a recommendation).
-
- TODO202: Either say the list talks about CSIT implementation,
- or downgrade item 3 to level of item 5 (example optimization
- that is ultimately out of scope of MLRsearch Specification).
-
-{:/comment}
-
Enhacements 1, 2 and partly 4 are formalized as MLRsearch Specification
within this document, other implementation details are out the scope.
-{::comment}
-
- MB14: Which ones?
-
- VP: Describe the lists better so "some" is not needed here.
-
- MK: Edited.
-
-{:/comment}
-
-{::comment}
-
- MB15: Where? In this document?
-
- VP: Yes.
-
- MK: Edited.
-
-{:/comment}
-
The remaining enhancements are treated as implementation details,
thus achieving high comparability without limiting future improvements.
[Overview of RFC 2544 Problems](#overview-of-rfc-2544-problems)
for the impact of different settings on result quality.
-{::comment}
-
- MB16: Where are those defined? Please add a pointer to the appropriate section.
-
- VP: Add pointer.
-
- MK: DONE203. We do not have any section in this document covering
- implementation details, as these are out of scope. Shall we add a
- note to that regard?
-
-{:/comment}
-
-{::comment}
-
- MB17: "flexibe" is ambiguous. Simply, state what we do.
-
- VP: Reformulate.
-
- MK: Edited.
-
-{:/comment}
-
-{::comment}
-
- MB18: Add pointers where this is further elaborated.
-
- VP: Point to specific subsection.
-
- MK: Added.
-
-{:/comment}
-
This document does not change or obsolete any part of [RFC2544].
-{::comment}
-
- MB19: List the set of terms/definitions used in this document.
- I guess we should at least leverage terms defined in 2544/1242.
-
- VP: Move list of terms here?
-
- MK: Relevant existing terms, including the ones from rfcs 1242,
- 2285 and 2544, are captured in section 4.3 Existing Terms, followed
- by the new terms that form the MLRsearch Specification. We went
- through quite a few iterations of getting it right, including a
- separate terminology section at the beginning of the document, and
- following BMWG comments and reviews ended up with the current
- document structure. Reworking it back is substantial work
-
- MK: Instead I propose we list one liners explaining the term in
- the context of the benchmarking domain.
-
- VP: See the comment in first Specification paragraph.
- For specific MB comment, I propose to say no edit needed,
- but ask on bmwg mailer to confirm.
-
-{:/comment}
-
-{::comment}
-
- MB20: Also, please add a statement that the convention used in bmwg
- are followed here as well (def, discussion, etc.)
-
- VP: Ok
-
- MK: The Requirements Language text is the standard one we use in
- BMWG. There are no any strict BMWG conventions that are followed in
- this document. Rather, the convention used for terms that are
- specific to this document, is described in the Section 4 of this
- document, and forms part of the MLRsearch Specification.
-
- VP: I think this is done, covered by edits elsewhere.
-
-{:/comment}
-
-{::comment}
-
- WONTFIX204: Update the subsection above when the subsections below are complete enough.
- Too late.
-
-{:/comment}
-
## Positioning within BMWG Methodologies
The Benchmarking Methodology Working Group (BMWG) produces recommendations (RFCs)
required to verify the DUT update and the frequency of running those tests.
This makes the overall test execution time even more important than before.
-{::comment}
-
- MB21: Is this really new?
-
- VP: Not sure, ask Maciek
-
- MK: Changed "emergence" to "proliferation". And yes, the
- proliferation and their importance is new.
- MK: Edited.
-
-{:/comment}
-
The throughput definition per [RFC2544] restricts the potential
for time-efficiency improvements.
The bisection method, when used in a manner unconditionally compliant
Firstly, a significant amount of time is spent on trials
with loads that, in retrospect, are far from the final determined throughput.
-{::comment}
-
- MB22: Won't age well
-
- VP: I agree, should be reformulated, not sure how.
-
- MK: Accepted proposed text change.
- MK: Edited.
-
-{:/comment}
-
-{::comment}
-
- MB23: Concretely, be affirmative if we provide an elaborated def,
- otherwise this statement can be removed.
-
- VP: Reformulate to affirm and point.
-
- MK: Agree. This is problem statement, not solution description, so
- removed this paragraph.
- MK: Removed.
-
-{:/comment}
-
-{::comment}
-
- MB24: Can we have a reference?
-
- VP: Find references.
-
- MK: Added wording connecting to the following paragraphs with
- explanations.
- MK: Edited.
-
-{:/comment}
-
-{::comment}
-
- MB25: Define "users".
-
- VP: Yes, we should be more careful around role names.
-
- MK: Added text.
- MK: Edited.
-
-{:/comment}
-
Secondly, [RFC2544] does not specify any stopping condition for
throughput search, so users of testing equipment implementing the
procedure already have access to a limited trade-off
between search duration and achieved precision.
However, each of the full 60-second trials doubles the precision.
-{::comment}
-
- MB26: Can we include a reminder of the 2544 search basics? (no need to be verbose, though)?
-
- VP: Maybe, not sure how feasible.
-
- MK: Added.
- MK: Edited.
-
-{:/comment}
-
As such, not many trials can be removed without a substantial loss of precision.
For reference, here is a brief [RFC2544] throughput binary
- The network frame forwarding device to which stimulus is offered and
response measured Section 3.1.1 of [RFC2285].
-{::comment}
-
- MB27: Double check
-
- VP: Ok.
-
- MK: Checked. OK.
- MK: Edited.
-
-{:/comment}
-
SUT as:
- The collective set of network devices as a single entity to which
kernel/hypervisor services, as well as any other software workloads
that share the same CPUs, memory and I/O resources.
-{::comment}
-
- MB28: This makes assumptions on the software architecture. We need to make sure this is generic enough.
- For example, what is a server? Etc.
- Does it applies to container, microservice, SF a la RFC7665, VNF a la ETSI, etc.?
-
- VP: Ask Maciek.
-
- MK: Rewritten it a bit to make it more generic. See if this helps.
- MK: Edited.
-
-{:/comment}
-
Given that a SUT is a shared multi-tenant environment,
the DUT might inadvertently
experience interference from the operating system
or other software operating on the same server.
-{::comment}
-
- MB29: Such as?
-
- VP: We should reformulate. Other components may differ (give few examples) but interference is general.
-
- MK: Removed surplus text, as it is now explained in preceding paragraph.
- MK: Edited.
-
-{:/comment}
-
Some of this interference can be mitigated.
For instance, in multi-core CPU systems, pinning DUT program threads to
specific CPU cores
and isolating those cores can prevent context switching.
-{::comment}
-
- MB30: If many? Or do we assume there are always many?
-
- VP: Reformulate.
-
- MK: Made it explicit for this paragraph.
- MK: Edited.
-
-{:/comment}
-
Despite taking all feasible precautions, some adverse effects may still impact
the DUT's network performance.
In this document, these effects are collectively
occur during each trial, nudging the measured performance slightly
below the theoretical maximum.
-{::comment}
-
- MB31: I don't parse this one. Please reword.
-
- VP: Ok.
-
- MK: Rephrased. Hope it reads better now.
- MK: Edited.
-
-{:/comment}
-
Unless specified otherwise, this document's focus is
on the potentially observable ends of the SUT performance spectrum,
as opposed to the extreme ones.
to distinguish SUT noise from DUT fluctuations
(based on the available literature at the time of writing).
-{::comment}
-
- MB32: As we need to reflect the view of the WG/IETF, not only authors
-
- VP: Ask Maciek.
-
- MK: Proposed text looks good. OK.
- MK: Edited.
-
-{:/comment}
-
Provided SUT execution environment and any co-resident workloads place
only negligible demands on SUT shared resources, so that
the DUT remains the principal performance limiter,
the DUT's ideal noiseless performance is defined
as the noiseless end of the SUT performance spectrum.
-{::comment}
-
- MB33: That is?
-
- VP: Reformulate.
-
- MK: Clarified.
- MK: Edited.
-
-{:/comment}
-
-{::comment}
-
- MB34: Please avoid "we" constructs.
-
- VP: Ok. Search and replace all into passive voice.
-
- MK: for the whole document.
-
- VP: Done here, created separate comments elsewhere.
-
-{:/comment}
-
-{::comment}
-
- MB35: Can we cite an example?
-
- VP: Yes for latency
-
- MK: Focus of mlrsearch is finding throughput. On 2nd thought,
- removing reference to latency as it is not applicable.
- MK: Edited.
-
-{:/comment}
-
Note that by this definition, DUT noiseless performance
also minimizes the impact of DUT fluctuations, as much as realistically possible
for a given trial duration.
metrics that approximate the (proxies for) DUT noiseless performance
across a range of SUT noise-tolerance levels.
-{::comment}
-
- MB36: ?
-
- VP: Reformulate.
-
- MK: Edited.
-
-{:/comment}
-
## Repeatability and Comparability
[RFC2544] does not suggest repeating throughput search. Also, note that
report some statistics (e.g., average and standard deviation, and/or
percentiles like p95).
-{::comment}
-
- MB37: What about at some other representative percentiles?
-
- VP: Ok.
-
- MK: Added percentiles.
- MK: Edited.
-
-{:/comment}
-
This can be used for a subset of tests deemed more important,
but it makes the search duration problem even more pronounced.
- Networking protocols tolerate frame loss better,
compared to the time when [RFC1242] and [RFC2544] were specified.
-{::comment}
-
- MB38: 1242 was also modern at the time they were published ;)
- This can be easily stale. Let's avoid that
-
- VP: Ok.
-
- MK: OK.
-
-{:/comment}
-
-- Increased link speeds require trials sending way more frames within the same duration,
- increasing the chance of a small SUT performance fluctuation
- being enough to cause frame loss.
-
-{::comment}
-
- MB39: Won't age well.
-
- VP: Ok, but some things did change over time (in focus if not in existence). Ask Maciek.
-
- MK: Edited.
-
-{:/comment}
-
-- Because noise-related drops usually arrive in small bursts, their
- impact on the trial's overall frame loss ratio is diluted by the
- longer intervals in which the SUT operates close to its noiseless
- performance; consequently, the averaged Trial Loss Ratio can still
- end up below the specified Goal Loss Ratio value.
-
-{::comment}
-
- MB40: Please split. Too long
-
- VP: At this point we probably should add a subsection somewhere,
- discussing how short-time performance may fluctuate within reasonable-duration trial
- (even as short as 1s).
-
- MK: Split with some rewording.
- MK: Edited.
-
-{:/comment}
-
-- If an approximation of the SUT noise impact on the Trial Loss Ratio is known,
- it can be set as the Goal Loss Ratio (see definitions of
- Trial and Goal terms in [Trial Terms](#trial-terms) and [Goal Terms](#goal-terms)).
-
-{::comment}
-
- MB41: Help readers find where to look for an authoritative definition.
-
- VP: The original paragraph maybe describes periodic processes eating CPU or even impact
- of reconfiguration during traffic, but both may be too exotic for this specification.
- I recommend to delete this paragraph. Otherwise, add link.
-
- MK: Added.
- MK: Edited.
-
-{:/comment}
-
-{::comment}
-
- MB42: Help readers find where to look for an authoritative definition.
-
- VP: Add link if not deleted?
+- Increased link speeds require trials sending way more frames within the same duration,
+ increasing the chance of a small SUT performance fluctuation
+ being enough to cause frame loss.
- MK: Added.
- MK: Edited.
+- Because noise-related drops usually arrive in small bursts, their
+ impact on the trial's overall frame loss ratio is diluted by the
+ longer intervals in which the SUT operates close to its noiseless
+ performance; consequently, the averaged Trial Loss Ratio can still
+ end up below the specified Goal Loss Ratio value.
-{:/comment}
+- If an approximation of the SUT noise impact on the Trial Loss Ratio is known,
+ it can be set as the Goal Loss Ratio (see definitions of
+ Trial and Goal terms in [Trial Terms](#trial-terms) and [Goal Terms](#goal-terms)).
- For more information, see an earlier draft [Lencze-Shima] (Section 5)
and references there.
search algorithm more user-friendly.
[RFC2544] throughput is not user-friendly in this regard.
-{::comment}
-
- MB43: We cant claim that
-
- VP: Ok, but also current sentence has circular dependency between non-zero rates
- and specific user-friendliness. Reformulate.
-
- MK: done.
- MK: Edited.
-
-{:/comment}
-
Furthermore, allowing users to specify multiple loss ratio values,
and enabling a single search to find all relevant bounds,
significantly enhances the usefulness of the search algorithm.
measurement of TCP throughput, and [Ott-Mathis-Semke-Mahdavi] for
models and calculations of TCP performance in presence of packet loss.
-{::comment}
-
- MB44: Among?
- Also, indicate "at the time of writing".
-
- VP: Ok.
-
- MK: done.
- MK: Edited.
-
-{:/comment}
-
## Inconsistent Trial Results
While performing throughput search by executing a sequence of
are recommended, presumably because after one zero-loss trial
there can be a subsequent inconsistent non-zero-loss trial.
-{::comment}
-
- MB45: ??
-
- VP: Full reference is needed.
-
- MK: done.
- MK: Edited.
-
-{:/comment}
-
-{::comment}
-
- MB46: ??
-
- VP: Also full reference.
-
- MK: done.
- MK: Edited.
-
-{:/comment}
-
A robust throughput search algorithm needs to decide how to continue
the search in the presence of such inconsistencies.
Definitions of throughput in [RFC1242] and [RFC2544] are not specific enough
# Requirements Language
-{::comment}
-
- MB5: Move after the intro
-
- VP: Ok.
-
- MK: OK.
- MK: Moved.
-
- VP: Currently the "intro" is quite long, so moved after "problems" now
- so this is situated closer to Specification.
-
-{:/comment}
-
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
"SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL"
in this document are to be interpreted as described in BCP 14, [RFC2119]
and [RFC8174] when, and only when, they appear in all capitals, as shown here.
-{::comment}
-
- The two references have to come one after another to avoid boilerplate nit,
- but the xml2rfc processing (web service) is buggy and strips rfc2119 brackets.
- Luckily, having this comment here avoids the bug and creates correct .xml file.
-
- VP: DONE: Verify the .txt render is still ok.
-
-{:/comment}
-
This document is categorized as an Informational RFC.
While it does not mandate the adoption of the MLRsearch methodology,
it uses the normative language of BCP 14 to provide an unambiguous specification.
The use of normative language is intended to promote repeatable and comparable results
among those who choose to implement this methodology.
-{::comment}
-
- VP: WONTFIX205: Mention conditional requirements if not clear from usage.
- For example, RFC 2544 Trial requirements must be either honored or deviations must be reported.
- Only mention in e-mail.
-
-{:/comment}
-
# MLRsearch Specification
This chapter provides all technical definitions
titled "Terms". This way, the list of terms is visible in table of
contents.
-{::comment}
-
- VP: DONE: Explain there is no separate list for terminology,
- subsections under "Terms" sections are terminology items,
- packaged together with related requirements and discussions.
-
- MK: Edited. Reworded to avoid repetition of subsections and such.
- Should read better now.
-
-{:/comment}
-
-{::comment}
-
- VP: DONE206: Should we explicitly mention that
- the table of contents also acts as a terminology list?
-
-{:/comment}
-
-{::comment}
-
- MB47: Please move this to the terminology section
- where we can group all conventions used in the document.
-
- VP: Ok.
-
- MK: There is no terminology section per se in this
- document. See my note to your comments in the Requirements Language
- section.
-
-{:/comment}
-
Each per term subsection contains a short *Definition* paragraph
containing a minimal definition and all strict requirements, followed
by *Discussion* paragraphs focusing on important consequences and
recommendations. Requirements about how other components can use the
defined quantity are also included in the discussion.
-{::comment}
-
- MB48: Not sure this brings much
-
- VP: Ok, delete.
-
- MK: done.
- MK: Edited.
-
-{:/comment}
-
-{::comment}
-
- Terminology structure
- Second proposal:
-
- The normative part of the MLRsearch specification can be decomposed
- into a directed acyclic graph, where each node is a "term"
- with its definition and requirements. The links in the graph are
- dependencies, "later" term can only be fully defined
- when all its "earlier" terms are already defined.
-
- Some terms define composite quantities, subsections could be used
- to hold definitions of all the attributes.
-
- For readability, informative "discussion" text could be added,
- but frequently it is convenient to use a later term
- when discussing an earlier term.
-
- The currect structure of sections is a compromise between these motivations.
-
- VP: Describe this informal principle in official text?
- VP: DONE: Not in draft, maybe in e-mail.
-
- VP: Distinguish requirements from other discussions?
- VP: DONE: Not in draft11, maybe in darf12?
-
- MK: I suggest we refrain from introducing and using DAG or other
- analogies from graph theory to explain how terms and terminology
- are managed in this document.
-
-{:/comment}
-
## Scope
This document specifies the Multiple Loss Ratio search (MLRsearch) methodology.
## Architecture Overview
-{::comment}
-
- DONE: Calls/invocations, interfaces.
- Low priority but useful for cleaning up the language.
- Maybe already fixed by MB49?
-
-{:/comment}
-
Although the normative text references only terminology that has already
been introduced, explanatory passages beside it sometimes profit from
terms that are defined later in the document. To keep the initial
messages. When the text contrasts alternative behaviours, it refers to
the different implementations of the same component.
-{::comment}
-
- VP: DONE207: Re-check usage of Implementation.
- Mention in e-mail.
-
-{:/comment}
-
A test procedure is considered compliant with the MLRsearch
Specification if it can be conceptually decomposed into the abstract
components defined herein, and each component satisfies the
and the Controller then invokes the Measurer repeatedly
until Controler decides it has enough information to return outputs.
-{::comment}
-
- MB49: Invoke?
- Maybe better to clarify what is actually meant by "calls".
-
- VP: Mention function calls in first sentence of this subsection.
-
- MK: done.
- MK: Edited.
-
- VP: Imperative programming introduced, "calls" is not correct.
-
- MK: OK.
-
-{:/comment}
-
-{::comment}
-
- MB50: Is there only one? Always?
- Include a provision to have many
-
- VP: Add a sentence about one search.
- Complete test suite may perform multiple searches, using maybe different controllers
-
- MK: Not sure what you mean. It already says "stopping conditions",
- implying there are many.
- MK: New text LGTM.
-
-{:/comment}
-
The part during which the Controller invokes the Measurer is termed the
Search. Any work the Manager performs either before invoking the
Controller or after Controller returns, falls outside the scope of the
MLRsearch Specification prescribes Regular Search Results and recommends
corresponding search completion conditions.
-{::comment}
-
- MB51: Does this also cover "abort" (before completion) to handle some error conditions?
- Or this is more a "stop execution"?
-
- VP: Add sentences about regular exits, irregular errors and user aborts?
-
- MK: Stop execution of the search.
-
-{:/comment}
-
Irregular Search Results are also allowed,
they have different requirements and their corresponding stopping conditions are out of scope.
Search stops when all Regular Goal Results are found,
or when some Search Goals are proven to have only Irregular Goal Results.
-{::comment}
-
- Note:
- This comment was about load classifications being equivalent among implementations.
- We deleted tat sentence, keeping this block just for tracking purposes.
-
- MB52: Do we have taxonomoy/means to make that equivalence easy to put in place?
-
- VP: Add links to Goal Result or Load Classification.
- But maybe this sentence is not needed in this subsection?
-
- MK: It is covered in Sections 4.6.2 Load Classification and 6.1
- Load Classification Logic and 6.4.3 Load Classification
- Computations.
-
-{:/comment}
-
-{::comment}
-
- Repeating the same search is possible, this is about single search.
- DONE by mentioning repeated benchmarks.
-
-
-{:/comment}
-
### Test Report
A primary responsibility of the Manager is to produce a Test Report,
the Search ends in finite time, as the freedom the Controller has
for Load selection also allows for clearly deficient choices.
-{::comment}
-
- MB53: I suggest we be factual and avoid use of "believe" and so on.
-
- VP: Ok.
-
- MK: Ok.
- MK: Removed.
-
- VP: Verified, currently fixed everywhere.
-
-{:/comment}
-
For deeper insights on these matters, refer to [FDio-CSIT-MLRsearch].
The primary MLRsearch implementation, used as the prototype
uses a number of specific quantities,
some of them can be expressed in several different units.
-{::comment}
-
- MB54: "S" is used in the previous section,
- Please pick one form and be consistent through the document.
-
- VP: S
-
- MK: MLRsearch Specification. Done all.
- MK: Edited.
-
-{:/comment}
-
In general, MLRsearch Specification does not require particular units to be used,
but it is REQUIRED for the test report to state all the units.
For example, ratio quantities can be dimensionless numbers between zero and one,
One constituent of a composite quantity is called an attribute.
A group of attribute values is called an instance of that composite quantity.
-{::comment}
-
- MB55: Please check
-
- VP: Reformulate.
-
- MK: Fixed punctuation and broken sentence.
- MK: Edited.
-
-{:/comment}
-
Some attributes may depend on others and can be calculated from other
attributes. Such quantities are called derived quantities.
## Existing Terms
-{::comment}
-
- MB56: I would delete.
-
- VP: Not sure yet.
-
- MK: Edited, instead of deleting.
- MK: Edited.
-
-{:/comment}
-
This specification relies on the following three documents that should
be consulted before attempting to make use of this document:
Definitions of some central terms from above documents are copied and
discussed in the following subsections.
-{::comment}
-
- MB57: Please move this to a terminology section suggested above
-
- VP: Ok for paragraph text...
-
- MK: See my note re your comment to the Requirements Language
- section. We ended up keeping the Existing Terms section just before
- the MLRsearch specific terms for clarity and easier reading, based
- on feedback from BMWG.
-
-{:/comment}
-
-{::comment}
-
- Some discussed aspects are important and specific to MLRsearch Specification,
- that is why these terms get full subsections, instead of just external references.
-
- VP: DONE208: Downgrade the last sentence from draft to e-mail?
-
-{:/comment}
-
### SUT
Defined in Section 3.1.2 of [RFC2285] as follows.
: An SUT consisting of a single network device is allowed by this definition.
-{::comment}
-
- MB58: Do we need to include this?
- I would only introduce deviation from base specs.
-
- VP: Ok on deviation, not sure on base definition.
-
- MK: We do need to include this, as the SUT and DUT terms are used
- repeatedly and are fundamental to understanding this
- specification.
-
- VP: Edited.
-
-{:/comment}
-
: In software-based networking SUT may comprise multitude of
networking applications and the entire host hardware and software
: The network forwarding device
to which stimulus is offered and response measured.
-{::comment}
-
- MB59: This reasons about "device", should we say that we extends this to "function"?
-
- VP: Yes. Extend discussion. If device requires medium/cables,
- function can be working with something software-like
- (packet vectors, shared memory regions).
-
- MK: added text covering this.
- MK: Edited.
-
-{:/comment}
-
Discussion:
The device can represent a software-based networking functions running
on commodity x86/ARM CPUs (vs purpose-built ASIC / NPU / FPGA).
-{::comment}
-
- MB60: Idem as SUT
-
- VP: Yes.
-
- MK: See my note re SUT.
-
-{:/comment}
-
: A well-designed SUTs should have the primary DUT as their performance bottleneck.
The ways to achieve that are outside of MLRsearch Specification scope.
as sent and received by a tester, as implicitly defined
in Section 6 of [RFC2544].
-{::comment}
-
- MB61: Is there any aspect new to MLRS?
-
- VP: No, make clear.
-
- MK: Yes, it is covered in detail in the following sections. The
- important part in this section, apart from quoting the original
- definition, is the discussion part, that sets the convention of how
- deviations from the original definition are captured in this
- document.
-
-{:/comment}
-
: The definition describes some traits, not using capitalized verbs
to signify strength of the requirements.
It is still RECOMMENDED to not deviate from the description,
as any deviation weakens comparability.
-{::comment}
-
- MB62: Not a normative language
-
- VP: Reformulate.
-
- MK: ok. changed from ALLOWED to allowed. is anything else needed?
- MK: Edited.
-
- VP: I feel this is important. Not only as a notable deviation from RFC 2544,
- but also as an example of normative language usage.
- Where RFC 2544 says you MUST do A or you CANNOT do B,
- MLRsearch may say there are specific conditions where you do not have to do A or can de B.
- Med had few comments like "since there is exception, the requirement is not universal",
- and I say "there are clear conditions, the requirement is universal if the conditions are satisfied".
-
- VP: Contruct appropriate "conditional requirement" sentence.
- DONE: Sentence improved.
-
-{:/comment}
-
-{::comment}
-
- VP: DONE: No time to mention "allowed if worse" principle in draft11 cycle.
-
-{:/comment}
-
: An example of deviation from [RFC2544] is using shorter wait times,
compared to those described in phases a), b), d) and e).
with bridge MAC learning being only one possible examples.
Appendix C.2.4.1 of [RFC2544] lists another example: ARP with wait time of 5 seconds.
-{::comment}
-
- MB63: Not a normative term
-
- VP: Ok.
-
- MK: ok. MB and MK edits applied.
- MK: Edited.
-
-{:/comment}
-
-{::comment}
-
- VP: DONE: Emphasize that this is a single trial.
- Any recurring tests count as separate trials,
- because they give different results.
-
-{:/comment}
-
: Some methodologies describe recurring tests.
If those are based on Trials, they are treated as multiple independent Trials.
## Trial Terms
-{::comment}
-
- WONTFIX209: Separate short descriptions from further discussions. Everywhere.
-
- Too late for draft-11.
-
-{:/comment}
-
This section defines new and redefine existing terms for quantities
relevant as inputs or outputs of a Trial, as used by the Measurer component.
This includes also any derived quantities related to results of one Trial.
### Trial Duration
-Definition:
-
-
-: Trial Duration is the intended duration of the phase c) of a Trial.
-
-{::comment}
-
- MB64: Does this cover also recurrences?
- See, e.g., draft-ietf-netmod-schedule-yang-05 - A Common YANG Data Model for Scheduling
- or draft-ietf-opsawg-scheduling-oam-tests-00?
-
- VP: No, mention that probably already in trial definition.
-
- MK: No, it does not cover recurrences as specified in above two
- drafts, as it does involve scheduled events.
-
- VP: Created comment block at appropriate subsections.
+Definition:
-{:/comment}
+
+: Trial Duration is the intended duration of the phase c) of a Trial.
Discussion:
such inputs to the Controller so that the Controller
only uses the accepted values.
-{::comment}
-
- MB65: To?
-
- VP: Reformulate.
-
- MK: Edited "proposes" => "uses".
- MK: Edited.
-
-{:/comment}
-
### Trial Load
Definition:
Informally, Traffic Load is a single number that can "scale" any traffic pattern
as long as the intuition of load intended against a single interface can be applied.
-{::comment}
-
- MB66: Please fix all similar ones in the doc
-
- VP: Ok.
-
- MK: ok. fixed only here for now.
- MK: DONE fix everywhere.
- MK: Edited.
-
-{:/comment}
-
: It MAY be possible to use a Trial Load value to describe a non-constant traffic
(using average load when the traffic consists of repeated bursts of frames
: Traffic patterns where a single Trial Load does not describe their scaling
cannot be used for MLRsearch benchmarks.
-{::comment}
-
- VP: DONE: Put bursty and other non-constant loads outside of the scope?
-
-{:/comment}
-
-{::comment}
-
- VP: DONE: What about multiple-interface loads if not equal among interfaces?
-
- VP: DONE: What about interfaces with different medium capacity (bandwidth or pps)?
-
-{:/comment}
-
-{::comment}
-
- MB67: Example of an example. :) Please reword.
-
- VP: Ok.
-
- MK: Edited.
-
-{:/comment}
-
-{::comment}
-
- MB68: Can we also cover load percentiles?
- The avg may not be representative to stress functions
- with anti-ddos guards, for example.
-
- VP: Not here. The average woks with aggregate counters used in loss definition.
- Maybe discuss anti-ddos in Traffic Profile subsection.
-
- MK: Definition of burst traffic profiles is out of scope.
-
- VP: DONE: Re-check the current text.
-
-{:/comment}
-
: Similarly to Trial Duration, some Measurers MAY limit the possible values
of Trial Load. Contrary to Trial Duration,
This is because the load differences are negligible (and frequently
undocumented) in practice.
-{::comment}
-
- MB69: Inappropriate use of normative language
-
- VP: Maybe disagree?
- Reformulate other parts to stress test report is subject to requirements.
-
- MK: Edited.
-
-{:/comment}
-
: The Controller MAY select Trial Load and Trial Duration values in a way
that would not be possible to achieve using any integer number of data frames.
-{::comment}
-
- VP: DONE: Use normative MAY somewhere.
-
-{:/comment}
-
: If a particular Trial Load value is not tied to a single Trial,
e.g., if there are no Trials yet or if there are multiple Trials,
load value, the report MUST also give the fixed conversion factor that
links the per-interface and multi-interface load values.
-{::comment}
-
- MB70: The causality effect may not be evident for the subset case, at least.
-
- VP: Reformulate.
-
- MK: Edited.
-
-{:/comment}
-
: The per-interface value remains the primary unit, consistent
with prevailing practice in [RFC1242], [RFC2544], and [RFC2285].
-{::comment}
-
- MB71: Which ones?
-
- VP: List the common examples.
-
- MK: Edited.
-
-{:/comment}
-
: The last paragraph also applies to other terms related to Load.
An example standardization effort is [Vassilev],
a draft at the time of writing.
-{::comment}
-
- VP: DONE210: Mention the YANG draft as a possible avenue?
-
-{:/comment}
-
-{::comment}
-
- MB72: Can we provide an example how to make that?
-
- VP: Nope. Say it is an integration effort.
-
- MK: Edited.
-
- VP: DONE.
-
-{:/comment}
-
-{::comment}
-
- MB73: This is too vague. Unless we reword top better reflect the requirement,
- I don't think we can use the normative language here
-
- VP: Reformulate.
-
- MK: Edited.
-
-{:/comment}
-
: Examples of traffic properties include:
- Data link frame size
- Symmetric bidirectional traffic
- Section 14 of [RFC2544].
-{::comment}
-
- MB74: Inappropriate use of normative language
-
- VP: Reformulate.
-
- MK: Edited.
-
-{:/comment}
-
-{::comment}
-
- MB75: Idem as above. MUST is not appropriate here.
-
- VP: Reformulate.
-
- MK: Edited.
-
-{:/comment}
-
: Other traffic properties that need to be somehow specified
in Traffic Profile, and MUST be mentioned in Test Report
- modifiers from Section 11 of [RFC2544].
- IP version mixing from Section 5.3 of [RFC8219].
-{::comment}
-
- VP: Multiple traffic profiles (at least frame sizes) in RFC2544,
- this is about single SUT+config+profile benchmark.
- DONE: I thihnk the current sentences are good enough.
-
-{:/comment}
-
### Trial Forwarding Ratio
Definition:
Only if this is not the case, the test report MUST describe the Traffic Profile
in a detail sufficient to imply how Trial Forwarding Ratio should be calculated.
-{::comment}
-
- MB76: MUST is an absolute requirement (i.e., there is no exception):
- 1. MUST This word, or the terms "REQUIRED" or "SHALL",
- mean that the definition is an absolute requirement of
- the specification.
- SHOULD This word, or the adjective "RECOMMENDED",
- mean that there may exist valid reasons in particular
- circumstances to ignore a particular item, but the full
- implications must be understood and carefully weighed
- before choosing a different course.
-
- VP: Reformulate.
-
- MK: Edited.
-
- VP: DONE: Apply stricter conditional requirements.
- E-mail: explain conditional requirements.
-
-{:/comment}
-
: Trial Forwarding Ratio MAY be expressed in other units
(e.g., as a percentage) in the test report.
if one direction is forwarded without losses, but the opposite direction
does not forward at all, the Trial Forwarding Ratio would be 0.5 (50%).
-{::comment}
-
- MB77: Should we call for more granularity to be provided/characterized?
-
- VP: No, include sentence on why.
-
- MK: What is the granularity that is needed here? The test
- procedure is about testing SUT as a single system, not parts of
- it.
-
- VP: DONE: Add the missing sentence.
-
-{:/comment}
-
: In future extensions, more general ways to compute Trial Forwarding Ratio
may be allowed, but the current MLRsearch Specification relies on this specific
: The Trial Loss Ratio is equal to one minus the Trial Forwarding Ratio.
-{::comment}
-
- MB78: For all sections, please indent so that we separate the def/discussion vs. description
-
- VP: Ok.
-
- MK: Edited. Indented 2 spaces, will kramdown renderer take it?
-
- VP: Applied the way from https://stackoverflow.com/a/59612110 instead.
-
-{:/comment}
-
Discussion:
to the arithmetic average of the individual per-interface forwarding rates
that would be produced by the RFC 2285 procedure.
-{::comment}
-
- MB79: Do we have an authoritative reference where this is defined?
- If not, please add an definition entry early in the terminology section.
-
- VP: Add reference.
-
- MK: Edited. Added reference to RFC2544.
-
-{:/comment}
-
-{::comment}
-
- MB80: Why both?
-
- VP: Add explanations to Traffic Profile subsection.
-
- MK: Edited. But shouldn't it say "sum of" instead of "arithmetic
- average"? Unless specified, Trial Forwarding Rate is an aggregate
- rate, not per interface, as it is representating capability of
- DUT/SUT not a subset of it associated with particular interface :)
-
- VP: DONE: Checked, it is average.
-
-{:/comment}
-
: For more complex traffic patterns, such as many-to-one as mentioned
in Section 3.3.2 Partially Meshed Traffic of [RFC2285],
: Trial Effective Duration is a time quantity related to a Trial,
by default equal to the Trial Duration.
-{::comment}
-
- MB81: For the periodic/recurrences, does it cover only one recurrence
- or from start to last independent of in-between execution periods?
-
- VP: Make sure Trial implies no recurrence.
-
- MK: Edited. BUT - Why do we need to state that. There is nothing in the text of
- Section 23 of RFC2544 and in above sections implying recurrences.
- Why then do we need to explicity say "no recurrence"?
-
- VP: DONE: After Trial is stable, simplify this sentence.
-
-{:/comment}
-
Discussion:
: Trial Effective Duration may be any positive time quantity
chosen by the Measurer to be used for time-based decisions in the Controller.
-{::comment}
-
- MB82: It is obvious, but should we say "positive"?
-
- VP: Yes.
-
- MK: Edited.
-
-{:/comment}
-
: The test report MUST explain how the Measurer computes the returned
Trial Effective Duration values, if they are not always
An approach is to measure the duration of the whole trial (including all wait times)
and use that as the Trial Effective Duration.
-{::comment}
-
- MB83: To be defined early in the terminology section
-
- VP: Ok.
-
- MK: Edited.
-
-{:/comment}
-
: This is also a way for the Measurer to inform the Controller about
its surprising behavior, for example, when rounding the Trial Duration value.
they are not familiar with,
except when passing Trial Output instances to the Manager.
-{::comment}
-
- MB84: As we have an exception
-
- VP: Reformulate.
- Conditional MUST has an authoritative prescribed condition,
- SHOULD gives implementers freedom to choose their own conditions.
-
- MK: Edited.
-
- VP: Done: Stricter conditional requirements not needed.
-
-{:/comment}
-
: Example of an optional attribute:
The aggregate number of frames expected to be forwarded during the trial,
: When referring to more than one trial, plural term "Trial Results" is
used to collectively describe multiple Trial Result instances.
-{::comment}
-
- While Controller implementations SHOULD NOT include additional attributes
- with independent values, they MAY include derived quantities.
-
- MB85: Can we include a short sentence to explain the risk if not followed?
-
- VP: Now I think even SHOULD NOT is too strong. Either way, reformulate.
-
- MK: For Vratko. Isn't this already covered in Trial Output? What
- other optional attributes are applicable here, give examples?
- Otherwise it's too abstract, open-ended, ambiguous and so on ...
- Many other blue-sky and hand-wavy adjectives come to my mind :)
-
- VP: DONE: Deleted
-
-{:/comment}
-
## Goal Terms
This section defines new terms for quantities relevant (directly or indirectly)
: Certain trials must reach this minimum duration before a load can be
classified as a lower bound.
-{::comment}
-
- MB86: I don't parse this.
-
- VP: Reformulate.
-
- MK: Edited.
-
-{:/comment}
-
: The Controller may choose shorter durations,
results of those may be enough for classification as an Upper Bound.
: A threshold value for a particular sum of Trial Effective Duration values.
The value MUST be positive.
-{::comment}
-
- MB87: I like this, but we should be consistent
- and mention it when appropriate for all other metrics
-
- VP: Ok. Check everywhere.
-
- MK: Checked all subsections under Goal Terms and Trial Terms.
- Applied as appropriate.
-
-{:/comment}
-
Discussion:
: Required attributes: Goal Final Trial Duration, Goal Duration Sum, Goal
Loss Ratio and Goal Exceed Ratio.
-{::comment}
-
- MB88: Listing the attributes this way allows to easily classify mandatory/optional.
- However, this not followed in previous. Please pick your favorite approach
- and use it in a consistent manner in the document.
-
- VP: Use this longer way everywhere (also saying if no other attributes could be added).
- Tangent: Be more lenient on attributes internal to Controller?
-
- MK: Edited this one. Applied to subsections in Trial Terms and
- Goal Terms as appropriate.
-
- WONTFIX211 check if more places need this.
- Too late.
-
-{:/comment}
-
: Optional attributes: Goal Initial Trial Duration and Goal Width.
However, it is RECOMMENDED for those implementations
to support missing attributes by providing typical default values.
-{::comment}
-
- MB89: I guess I understand what is meant here, but I think this should be reworded
- to avoid what can be seen as inconsistency: do not support vs. support a default.
-
- VP: Yes, probably worth a separate subsection,
- distinguishing automated implementations from manual processes.
-
- MK: No separate subsection. We should state that that the listed
- optional attributes should have documented default values. But i do
- not like the open-ended "Implementations MAY add their own
- attributes." Either examples are added or this sentence is
- removed.
-
- VP: DONE: Check if Specification does not mention "implementation".
-
-{:/comment}
-
: For example, implementations with Goal Initial Trial Durations
may also require users to specify "how quickly" should Trial Durations increase.
Discussion:
-{::comment}
-
- VP: DONE: Use MUST NOT to make Controller behavior constrained, conditionally?
-
-{:/comment}
-
: Max Load is an example of an optional attribute (outside the list of Search Goals)
required by some implementations of MLRsearch.
Test Report MAY express this quantity using multi-interface values,
as sum of per-interface maximal loads.
-{::comment}
-
- VP: DONE: Use MAY.
-
-{:/comment}
-
#### Min Load
Definition:
Discussion:
-{::comment}
-
- VP: DONE: Use MUST NOT?
-
-{:/comment}
-
: Min Load is another example of an optional attribute
required by some implementations of MLRsearch.
Test Report MAY express this quantity using multi-interface values,
as sum of per-interface minimal loads.
-{::comment}
-
- VP: DONE: Use MAY.
-
-{:/comment}
-
## Auxiliary Terms
While the terms defined in this section are not strictly needed
Informally, the previous Upper Bound got invalidated.
In practice, the Load frequently becomes a [Lower Bound](#lower-bound) instead.
-{::comment}
-
- VP: DONE: Reformulate to avoid the "we" construct.
-
- VP: DONE: Do we need Invalidation as a separate term? I guess no.
-
-{:/comment}
-
#### Lower Bound
Definition:
Informally, the previous Lower Bound got invalidated.
In practice, the Load frequently becomes an [Upper Bound](#upper-bound) instead.
-{::comment}
-
- Same as in upper bound:
-
- VP: DONE: Reformulate to avoid the "we" construct.
-
- VP: DONE: Do we need Invalidation as a separate term? I guess no.
-
-{:/comment}
-
#### Undecided
Definition:
: Given that Relevant Upper Bound is a quantity based on Load,
Test Report MAY express this quantity using multi-interface values,
-as sum of per-interface loads.
-
-{::comment}
-
- VP: DONE: Use MAY.
-
-{:/comment}
+as sum of per-interface loads.
### Relevant Lower Bound
Test Report MAY express this quantity using multi-interface values,
as sum of per-interface loads.
-{::comment}
-
- VP: DONE: Use MAY.
-
-{:/comment}
-
### Conditional Throughput
Definition:
Test Report MAY express this quantity using multi-interface values,
as sum of per-interface forwarding rates.
-{::comment}
-
- VP: DONE: Use MAY.
-
-{:/comment}
-
### Goal Results
MLRsearch Specification is based on a set of requirements
Relevant Upper Bound and Relevant Lower Bound are REQUIRED attributes.
Conditional Throughput is a RECOMMENDED attribute.
-{::comment}
-
- MB90: To do what? I'm afraid we need to explicit the meaning here.
-
- VP: Yes, reformulate.
-
- MK: Edited.
-
-{:/comment}
-
-{::comment}
-
- MB91: Isn't this redundant with listing the bounds as required in the previous definition?
-
- VP: Do we need separation between may-not-exist and must-exist quantities?
- Either way, reformulate.
-
- MK: Deleted. Agree with Med - Sentence was redundant as already
- covered by text in definition "Relevant Upper Bound and Relevant
- Lower Bound are REQUIRED attributes."
-
- VP: WONTFIX212: Re-check.
- Too late.
-
-{:/comment}
-
Discussion:
: When the Search Result is expressed as a mapping, it MUST contain an
entry for every Search Goal instance supplied in the Controller Input.
-{::comment}
-
- MB92: To what?
-
- VP: Subsections on quantities and interfaces should mention equivalent representations.
- Then reformulate this.
-
- MK: Edited. First two paragraphs in Discussion changed to make it
- clearer.
-
-{:/comment}
-
: Identical Goal Result instances MAY be listed for different Search Goals,
but their status as regular or irregular may be different.
: MLRsearch implementation MAY return additional data in the Controller Output,
e.g., number of trials performed and the total Search Duration.
-{::comment}
-
- VP: DONE low priority: Regular end, irregular exit, user abort.
- Should not need new text, review related MD comments.
- Maybe differentiate abort conditions, or at least make them explicitly vague?
-
-{:/comment}
-
-{::comment}
-
- VP: DONE elsewhere: Emphasize one controller call gives one benchmark.
- Any recurring tests count as independent benchmarks.
-
-{:/comment}
-
## Architecture Terms
MLRsearch architecture consists of three main system components:
and the following subsections finalize their definitions
using terms from previous sections.
-{::comment}
-
- MB93: I guess these should be introduced before the attributes as these components
- are used in the description. Please reconsider the flow of the document.
-
- VP: Reformulate this to clarify overview introduced, this finalizes the definition.
-
- MK: Edited. And I disagree. Three components of the architecture
- are listed, with definitions following. I do not envisage any
- problem from the reader perspective.
-
- VP: DONE: Added a sentence.
-
-{:/comment}
-
Note that the architecture also implies the presence of other components,
such as the SUT and the tester (as a sub-component of the Measurer).
can be fully independent from the Controller implementations,
e.g., developed in different programming languages.
-{::comment}
-
- MB94: Aha, this answers a comment I made earlier :)
- Let's save cycles for other readers and move all this
- section early in the document.
-
- VP: Hmm, maybe a subsection of overview?
- Definitely something needs to be moved around.
-
- MK: Edited. And addressed the original concern. See my note at MB93.
-
- VP: DONE: Overview got updated.
-
-{:/comment}
-
### Measurer
Definition:
the Controller produces a final Controller Output instance and
terminates.
-{::comment}
-
- MB95: Till a stop?
-
- VP: Yes.
-
- MK: Edited. It should be clear now.
-
-{:/comment}
-
Discussion:
rates or to disable all but one transport protocol when testing the
throughput of that protocol."
-{::comment}
-
- VP: DONE: Nested "definition list" does not work. Use quotes here?
-
-{:/comment}
-
: It is REQUIRED for the test report to encompass all the SUT configuration
details, including description of a "default" configuration common for most tests
calls (for example, combining or comparing their results) is explicitly
out of scope for this document.
-{::comment}
-
- MB96: This answers a comment I have earlier.
- Please move all these details to be provided early.
-
- VP: Yes (covered by earlier comments).
-
- MK: Yes - covered by earlier edits.
-
-{:/comment}
-
-{::comment}
-
- MB97: Should there be a mode where conditional calls are invoked?
- Or more generally to instruct some dependency?
-
- VP: Explain in earlier subsections, repeats are out of scope.
-
- MK: Edited. It should be clear now that repeats are out of scope.
-
-{:/comment}
-
## Compliance
This section discusses compliance relations between MLRsearch
- Goal Loss Ratio = 0%
- Goal Exceed Ratio = 0%
-{::comment}
-
- MB98: Not related but triggered by this,
- can we have at the end of the document a table with all
- the default values/recommended for the various
- attributes defined in the document?
-
- VP: Maybe? Revisit later to see if we have enough data to warrant table format.
-
- MK: WONTFIX213. This is not a bad idea. A section that in summary table
- lists common usage cases with recommended settings e.g. RFC2544,
- TST009, FD.io CSIT, examples of SUTs with certain behaviour e.g.
- suspected periodic SUT disruption. It will make it more concrete to
- the reader and verify their understanding of the spec.
-
- VP: I think too low priority for draft11.
-
-{:/comment}
-
Goal Loss Ratio and Goal Exceed Ratio attributes,
are enough to make the Search Goal conditionally compliant.
Adding Goal Final Trial Duration
# Methodology Rationale and Design Considerations
-{::comment}
-
- MB99: Please consider that a more explicit title that reflects the content.
-
- VP: Yes, but not sure what would be a better title yet.
-
- MK: Edited. Also updated opening paragraph to motivate the reader.
-
-{:/comment}
-
-{::comment}
-
- Manual processes, automation, implementation as library,...
-
- DONE: Recheck specification minimizes user/iplementation discussions.
-
- DONE low priority: Add those discussions here somewhere is useful.
-
-{:/comment}
-
This section explains the Why behind MLRsearch. Building on the
normative specification in Section
[MLRsearch Specification](#mlrsearch-specification),
The biggest
-{::comment}
-
- MB100: We don't need to say it if it is obvious ;)
-
- VP: Reformulate.
-
- MK: Edited.
-
-{:/comment}
-
difference between MLRsearch and [RFC2544] binary search
is in the goals of the search.
[RFC2544] has a single goal, based on classifying a single full-length trial
MLRsearch Specification
-{::comment}
-
- MB101: Specification?
-
- VP: Ok.
-
- MK: Edited.
-
-{:/comment}
-
supports multiple Search Goals, making the search procedure
more complicated compared to binary search with single goal,
but most of the complications do not affect the final results much.
a model where some Trial Results (those with high Trial Loss Ratio) are affected
by infrequent effects, causing unsatisfactory repeatability
-{::comment}
-
- MB102: Or other similar terms, but not poor thing.
- Please consider the same change in other parts of the document.
-
- VP: Ok, search&replace.
-
- MK: Edited. Searched and replaced all with unsatisfactory, unacceptable.
-
-{:/comment}
-
of [RFC2544] Throughput results. Refer to Section [DUT in SUT](#dut-in-sut)
for a discussion about noiseful and noiseless ends
of the SUT performance spectrum.
decide whether, when, and how short trial durations are used. The exact
heuristics and controls are left to the discretion of the implementer.
-{::comment}
-
- MB103: We may say that how this is exposed to a user/manager is implmentation specific.
-
- VP: Earlier subsection should explain when discussing implementations.
-
- MK: Edited.
-
-{:/comment}
-
While MLRsearch implementations are free to use any logic to select
Trial Input values, comparability between MLRsearch implementations
is only assured when the Load Classification logic
generalized throughput definition - is the presence of a hard
performance limit.
-{::comment}
-
- MB104: Not sure to parse this.
-
- VP: Reformulate.
-
- MK: Edited.
-
-{:/comment}
-
### Hard Performance Limit
Even if bandwidth of a medium allows higher traffic forwarding performance,
Those limitations should be known and provided as Max Load, Section
[Max Load](#max-load).
-{::comment}
-
- MB105: We may say that some implementation may expose their capabilities
- using IPFIX/YANG, but such exposure is out of scope.
-
- VP: Add capability exposition to earlier implementation subsections.
- Reformulate this sentence to be specific to hard limits.
-
- MK: Edited. Capability exposition of SUT and DUT is out of scope
- of this document. Do we need to state it in the opening somewhere?
- COTS NICs do not support network configuration protocols,
- they are configured using vendor specific registers and associated
- kernel or userspace drivers.
-
-{:/comment}
-
But if Max Load is set larger than what the interface can receive or transmit,
there will be a "hard limit" behavior observed in Trial Results.
be generalized - rather than relying solely on the Relevant Lower
Bound - to reflect realistic, limit-aware performance.
-{::comment}
-
- MK: Edited. Above paragraph was not reading well. Following from
- MB105 I have updated it further to motivate generalization of
- throughput.
-
-{:/comment}
-
MLRsearch defines one such generalization,
the [Conditional Throughput](#conditional-throughput).
It is the Trial Forwarding Rate from one of the Full-Length Trials
one can prove that Conditional Throughput
values may have up to the Goal Loss Ratio relative difference.
-{::comment}
-
- VP: DONE: Reformulate to avoid "we" construct.
-
-{:/comment}
-
Setting the Goal Width below the Goal Loss Ratio
may cause the Conditional Throughput for a larger Goal Loss Ratio to become smaller
than a Conditional Throughput for a goal with a lower Goal Loss Ratio,
Note: For explanation clarity variables are taged as (I)nput,
(T)emporary, (O)utput.
-{::comment}
-
- MB106: Move this to the terminology/convention section
-
- VP: I do not think these flags fit into terminology.
- For this long list, maybe divide into sublists?
-
- MK: I agree - this is does not belong to draft terminology
- section. And I agree, for readability we could split the long list
- into groups with meaningful headers. See my attempt to do so below.
-
-{:/comment}
-
- Collect Trial Results:
- Take all Trial Result instances (I) measured at a given load.
benchmark scores - such as a dedicated "fast-track" test mode that is
never used in normal operation.
-{::comment}
-
- MB109: Some more elaboration is needed
-
- VP: This needs BMWG discussion as this chapter is a "boilerplate"
- copied from earlier BMWG documents.
-
- MK: Edited
-
- VP: Ok, for draft11, but we can start discussing on bmwg for later versions.
-
-{:/comment}
-
Any implications for network security arising from the DUT/SUT SHOULD be
identical in the lab and in production networks.
-{::comment}
-
- MB110: Why? We can accept some relax rule in controlled environnement,
- but this not acceptable in deployement. I would adjust accordingly.
-
- VP: Explain and discuss in BMWG.
-
- MK: Keeping as is. It is a BMWG standard text that applies here.
- You can see it verbatim in RFC 6815 (section 7), RFC 6414 (section 4.1), RFC
- 9004 (section 8), and several BMWG Internet-Drafts. Its purpose is to
- remind implementers and testers that the device under test must not
- be re-configured into an unrealistic or less-secure state merely to
- obtain benchmark data - a principle that complements the adjacent
- sentence about avoiding "special benchmarking modes." Including
- the sentence therefore maintains consistency with BMWG precedent
- and reinforces a key security expectation.
-
-{:/comment}
-
-{::comment}
-
- MB111: I would some text to basically
- say that the benchmarking results should be adequately
- protected and guards top prevent leaks to unauthorized
- entities.
- Otherwise, the benchmark results can be used by
- attacker to better adjust their attacks and perform
- attacks that would lead to DDoS a node of the DUT in a
- live network, infer the limitation of a DUT that can be
- used for overflow attacks, etc.
- Also, we can say that the benchmark is agnostic to trafic
- and does not manipulate real traffic. As such, Privacy is
- not a concern.
-
- VP: To BMWG.
-
- MK: Keeping as is. See my comments above at MB110.
-
-{:/comment}
-
# Acknowledgements
Special wholehearted gratitude and thanks to the late Al Morton for his
# Load Classification Code
-{::comment}
-
- MB112: Move after references
-
- VP: Ok.
-
- MK: Move after references.
-
- VP: Done by moving "--- back" above.
-
-{:/comment}
-
This appendix specifies how to perform the Load Classification.
Any Trial Load value can be classified,
Although presented as pseudocode, the listing is syntactically valid
Python and can be executed without modification.
-{::comment}
-
- MB113: Where is that python code?
-
- VP: Reformulate.
-
- MK: Edited.
-
-{:/comment}
-
If values of both variables are computed to be true, the Load in question
is classified as a Lower Bound according to the given Search Goal instance.
If values of both variables are false, the Load is classified as an Upper Bound.
<CODE ENDS>
~~~
-{::comment}
-
- MB114: May display this a table for better readability
-
- VP: Ok.
-
- MK: Disagree. Can we have it in a proper code block instead?
-
- VP: DONE: block with tags.
-
-{:/comment}
-
# Conditional Throughput Code
This section specifies an example of how to compute Conditional Throughput,
<CODE ENDS>
~~~
-{::comment}
-
- MB115: Please use <CODE BEGINS> and <CODE ENDS> markers.
-
- VP: Also table? Ok.
-
- MK: Not table, it's code. Can we have it in a proper code
- block instead?
-
- VP: DONE: block with tags.
-
-{:/comment}
-
# Example Search
-{::comment}
-
- MB107: We may move this section to an appendix
-
- VP: Ok.
-
- MK: Move to Appendix A, before the pseudocode Appendices.
- Keeping it here for now to finish editing with clean change
- tracking in gerrit.
-
- VP: DONE: Appendix C now. A and B are for pseudocode as that is more important.
-
-{:/comment}
-
The following example Search is related to
one hypothetical run of a Search test procedure
that has been started with multiple Search Goals.
Pessimistic exceed ratio | 100% | 100% | 50.833% | 100%
Classification Result | Undecided | Undecided | Undecided | Undecided
-{::comment}
-
- MB108: Please add a table legend. Idem for all tables
-
- VP: Ok. Figure out how.
-
- MK: Kramdown magic.
-
- VP: WONTFIX as currently not possible without coding effort:
- https://github.com/gettalong/kramdown/issues/593
-
-{:/comment}
-
This is the last point in time where all goals have this load as Undecided.
### Point 2
Due to stricter Goal Exceed Ratio, this Conditional Throughput
is smaller than Conditional Throughput of the other two goals.
-
-{::comment}
-
- WONTFIX214: There are long lines.
- Too late for draft-11.
-
-{:/comment}
-
-{::comment}
-
- VP: DONE: Fix warnings from kramdown.
-
-{:/comment}
-
-{::comment}
-
- [Final checklist.]
-
- <mark>VP WONTFIX215 Final Checks. Only mark as done when there are no active todos above.</mark>
-
- <mark>VP Rename chapter/sub-/section to better match their content.</mark>
-
- <mark>MKP3 VP WONTFIX216: Recheck the definition dependencies go bottom-up.</mark>
-
- <mark>VP DONE217: Unify external reference style (brackets, spaces, section numbers and names).</mark>
-
- <mark>MKP2 VP DONE218: Capitalization of New Terms: useful when editing and reviewing,
- but I still vote to remove capitalization before final submit,
- because all other RFCs I see only capitalize due to being section title.</mark>
-
- <mark>VP WONTFIX219: If time permits, keep improving formal style (e.g., using AI).</mark>
-
-{:/comment}
<abstract>
-<?line 108?>
+<?line 72?>
<t>This document specifies extensions to "Benchmarking Methodology for
Network Interconnect Devices" (RFC 2544) throughput search by
support multiple loss ratio searches, and improve result repeatability
and comparability.</t>
-
-
<t>MLRsearch is motivated by the pressing need to address the challenges of
evaluating and testing the various data plane solutions, especially in
software- based networking systems based on Commercial Off-the-Shelf
-
-
</abstract>
<middle>
-<?line 174?>
+<?line 86?>
<section anchor="introduction"><name>Introduction</name>
<section anchor="purpose"><name>Purpose</name>
-
<t>The purpose of this document is to describe the Multiple Loss Ratio search
(MLRsearch) methodology, optimized for determining
data plane throughput in software-based networking devices and functions.</t>
-
<t>Applying the vanilla throughput binary search,
as specified for example in <xref target="TST009"></xref> and <xref target="RFC2544"></xref>
to software devices under test (DUTs) results in several problems:</t>
-
-
<t><list style="symbols">
<t>Binary search takes long as most trials are done far from the
eventually found throughput.</t>
value.)</t>
</list></t>
-
-
-
<t>To address these problems,
early MLRsearch implementations employed the following enhancements:</t>
prevent the bounds from narrowing unnecessarily.</t>
</list></t>
-
-
-
<t>Enhacements 1, 2 and partly 4 are formalized as MLRsearch Specification
within this document, other implementation details are out the scope.</t>
-
-
<t>The remaining enhancements are treated as implementation details,
thus achieving high comparability without limiting future improvements.</t>
<xref target="overview-of-rfc-2544-problems">Overview of RFC 2544 Problems</xref>
for the impact of different settings on result quality.</t>
-
-
-
<t>This document does not change or obsolete any part of <xref target="RFC2544"></xref>.</t>
-
-
-
</section>
<section anchor="positioning-within-bmwg-methodologies"><name>Positioning within BMWG Methodologies</name>
required to verify the DUT update and the frequency of running those tests.
This makes the overall test execution time even more important than before.</t>
-
<t>The throughput definition per <xref target="RFC2544"></xref> restricts the potential
for time-efficiency improvements.
The bisection method, when used in a manner unconditionally compliant
<t>Firstly, a significant amount of time is spent on trials
with loads that, in retrospect, are far from the final determined throughput.</t>
-
-
-
-
<t>Secondly, <xref target="RFC2544"></xref> does not specify any stopping condition for
throughput search, so users of testing equipment implementing the
procedure already have access to a limited trade-off
between search duration and achieved precision.
However, each of the full 60-second trials doubles the precision.</t>
-
<t>As such, not many trials can be removed without a substantial loss of precision.</t>
<t>For reference, here is a brief <xref target="RFC2544"></xref> throughput binary
response measured Section 3.1.1 of <xref target="RFC2285"></xref>.</t>
</list></t>
-
<t>SUT as:</t>
<t><list style="symbols">
kernel/hypervisor services, as well as any other software workloads
that share the same CPUs, memory and I/O resources.</t>
-
<t>Given that a SUT is a shared multi-tenant environment,
the DUT might inadvertently
experience interference from the operating system
or other software operating on the same server.</t>
-
<t>Some of this interference can be mitigated.
For instance, in multi-core CPU systems, pinning DUT program threads to
specific CPU cores
and isolating those cores can prevent context switching.</t>
-
<t>Despite taking all feasible precautions, some adverse effects may still impact
the DUT's network performance.
In this document, these effects are collectively
occur during each trial, nudging the measured performance slightly
below the theoretical maximum.</t>
-
<t>Unless specified otherwise, this document's focus is
on the potentially observable ends of the SUT performance spectrum,
as opposed to the extreme ones.</t>
to distinguish SUT noise from DUT fluctuations
(based on the available literature at the time of writing).</t>
-
<t>Provided SUT execution environment and any co-resident workloads place
only negligible demands on SUT shared resources, so that
the DUT remains the principal performance limiter,
the DUT's ideal noiseless performance is defined
as the noiseless end of the SUT performance spectrum.</t>
-
-
-
<t>Note that by this definition, DUT noiseless performance
also minimizes the impact of DUT fluctuations, as much as realistically possible
for a given trial duration.</t>
metrics that approximate the (proxies for) DUT noiseless performance
across a range of SUT noise-tolerance levels.</t>
-
</section>
<section anchor="repeatability-and-comparability"><name>Repeatability and Comparability</name>
report some statistics (e.g., average and standard deviation, and/or
percentiles like p95).</t>
-
<t>This can be used for a subset of tests deemed more important,
but it makes the search duration problem even more pronounced.</t>
<t><list style="symbols">
<t>Networking protocols tolerate frame loss better,
compared to the time when <xref target="RFC1242"></xref> and <xref target="RFC2544"></xref> were specified.</t>
-</list></t>
-
-
-<t><list style="symbols">
<t>Increased link speeds require trials sending way more frames within the same duration,
increasing the chance of a small SUT performance fluctuation
being enough to cause frame loss.</t>
-</list></t>
-
-
-<t><list style="symbols">
<t>Because noise-related drops usually arrive in small bursts, their
impact on the trial's overall frame loss ratio is diluted by the
longer intervals in which the SUT operates close to its noiseless
performance; consequently, the averaged Trial Loss Ratio can still
end up below the specified Goal Loss Ratio value.</t>
-</list></t>
-
-
-<t><list style="symbols">
<t>If an approximation of the SUT noise impact on the Trial Loss Ratio is known,
it can be set as the Goal Loss Ratio (see definitions of
Trial and Goal terms in <xref target="trial-terms">Trial Terms</xref> and <xref target="goal-terms">Goal Terms</xref>).</t>
-</list></t>
-
-
-
-<t><list style="symbols">
<t>For more information, see an earlier draft <xref target="Lencze-Shima"></xref> (Section 5)
and references there.</t>
</list></t>
search algorithm more user-friendly.
<xref target="RFC2544"></xref> throughput is not user-friendly in this regard.</t>
-
<t>Furthermore, allowing users to specify multiple loss ratio values,
and enabling a single search to find all relevant bounds,
significantly enhances the usefulness of the search algorithm.</t>
measurement of TCP throughput, and <xref target="Ott-Mathis-Semke-Mahdavi"></xref> for
models and calculations of TCP performance in presence of packet loss.</t>
-
</section>
<section anchor="inconsistent-trial-results"><name>Inconsistent Trial Results</name>
are recommended, presumably because after one zero-loss trial
there can be a subsequent inconsistent non-zero-loss trial.</t>
-
-
<t>A robust throughput search algorithm needs to decide how to continue
the search in the presence of such inconsistencies.
Definitions of throughput in <xref target="RFC1242"></xref> and <xref target="RFC2544"></xref> are not specific enough
</section>
<section anchor="requirements-language"><name>Requirements Language</name>
-
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
"SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL"
in this document are to be interpreted as described in BCP 14, <xref target="RFC2119"></xref>
and <xref target="RFC8174"></xref> when, and only when, they appear in all capitals, as shown here.</t>
-
<t>This document is categorized as an Informational RFC.
While it does not mandate the adoption of the MLRsearch methodology,
it uses the normative language of BCP 14 to provide an unambiguous specification.
The use of normative language is intended to promote repeatable and comparable results
among those who choose to implement this methodology.</t>
-
</section>
<section anchor="mlrsearch-specification"><name>MLRsearch Specification</name>
titled "Terms". This way, the list of terms is visible in table of
contents.</t>
-
-
-
<t>Each per term subsection contains a short <em>Definition</em> paragraph
containing a minimal definition and all strict requirements, followed
by <em>Discussion</em> paragraphs focusing on important consequences and
recommendations. Requirements about how other components can use the
defined quantity are also included in the discussion.</t>
-
-
<section anchor="scope"><name>Scope</name>
<t>This document specifies the Multiple Loss Ratio search (MLRsearch) methodology.
</section>
<section anchor="architecture-overview"><name>Architecture Overview</name>
-
<t>Although the normative text references only terminology that has already
been introduced, explanatory passages beside it sometimes profit from
terms that are defined later in the document. To keep the initial
messages. When the text contrasts alternative behaviours, it refers to
the different implementations of the same component.</t>
-
<t>A test procedure is considered compliant with the MLRsearch
Specification if it can be conceptually decomposed into the abstract
components defined herein, and each component satisfies the
and the Controller then invokes the Measurer repeatedly
until Controler decides it has enough information to return outputs.</t>
-
-
<t>The part during which the Controller invokes the Measurer is termed the
Search. Any work the Manager performs either before invoking the
Controller or after Controller returns, falls outside the scope of the
<t>MLRsearch Specification prescribes Regular Search Results and recommends
corresponding search completion conditions.</t>
-
<t>Irregular Search Results are also allowed,
they have different requirements and their corresponding stopping conditions are out of scope.</t>
Search stops when all Regular Goal Results are found,
or when some Search Goals are proven to have only Irregular Goal Results.</t>
-
-
<section anchor="test-report"><name>Test Report</name>
<t>A primary responsibility of the Manager is to produce a Test Report,
the Search ends in finite time, as the freedom the Controller has
for Load selection also allows for clearly deficient choices.</t>
-
<t>For deeper insights on these matters, refer to <xref target="FDio-CSIT-MLRsearch"></xref>.</t>
<t>The primary MLRsearch implementation, used as the prototype
uses a number of specific quantities,
some of them can be expressed in several different units.</t>
-
<t>In general, MLRsearch Specification does not require particular units to be used,
but it is REQUIRED for the test report to state all the units.
For example, ratio quantities can be dimensionless numbers between zero and one,
One constituent of a composite quantity is called an attribute.
A group of attribute values is called an instance of that composite quantity.</t>
-
<t>Some attributes may depend on others and can be calculated from other
attributes. Such quantities are called derived quantities.</t>
</section>
<section anchor="existing-terms"><name>Existing Terms</name>
-
<t>This specification relies on the following three documents that should
be consulted before attempting to make use of this document:</t>
<t>Definitions of some central terms from above documents are copied and
discussed in the following subsections.</t>
-
-
<section anchor="sut"><name>SUT</name>
<t>Defined in Section 3.1.2 of <xref target="RFC2285"></xref> as follows.</t>
<dd>
<t>An SUT consisting of a single network device is allowed by this definition.</t>
</dd>
-</dl>
-
-
-<dl>
<dt> </dt>
<dd>
<t>In software-based networking SUT may comprise multitude of
</dd>
</dl>
-
<t>Discussion:</t>
<dl>
The device can represent a software-based networking functions running
on commodity x86/ARM CPUs (vs purpose-built ASIC / NPU / FPGA).</t>
</dd>
-</dl>
-
-
-<dl>
<dt> </dt>
<dd>
<t>A well-designed SUTs should have the primary DUT as their performance bottleneck.
as sent and received by a tester, as implicitly defined
in Section 6 of <xref target="RFC2544"></xref>.</t>
</dd>
-</dl>
-
-
-<dl>
<dt> </dt>
<dd>
<t>The definition describes some traits, not using capitalized verbs
It is still RECOMMENDED to not deviate from the description,
as any deviation weakens comparability.</t>
</dd>
-</dl>
-
-
-
-<dl>
<dt> </dt>
<dd>
<t>An example of deviation from <xref target="RFC2544"></xref> is using shorter wait times,
with bridge MAC learning being only one possible examples.
Appendix C.2.4.1 of <xref target="RFC2544"></xref> lists another example: ARP with wait time of 5 seconds.</t>
</dd>
-</dl>
-
-
-
-<dl>
<dt> </dt>
<dd>
<t>Some methodologies describe recurring tests.
</section>
<section anchor="trial-terms"><name>Trial Terms</name>
-
<t>This section defines new and redefine existing terms for quantities
relevant as inputs or outputs of a Trial, as used by the Measurer component.
This includes also any derived quantities related to results of one Trial.</t>
</dd>
</dl>
-
<t>Discussion:</t>
<dl>
</dd>
</dl>
-
</section>
<section anchor="trial-load"><name>Trial Load</name>
Informally, Traffic Load is a single number that can "scale" any traffic pattern
as long as the intuition of load intended against a single interface can be applied.</t>
</dd>
-</dl>
-
-
-<dl>
<dt> </dt>
<dd>
<t>It MAY be possible to use a Trial Load value to describe a non-constant traffic
<t>Traffic patterns where a single Trial Load does not describe their scaling
cannot be used for MLRsearch benchmarks.</t>
</dd>
-</dl>
-
-
-
-
-
-<dl>
<dt> </dt>
<dd>
<t>Similarly to Trial Duration, some Measurers MAY limit the possible values
This is because the load differences are negligible (and frequently
undocumented) in practice.</t>
</dd>
-</dl>
-
-
-<dl>
<dt> </dt>
<dd>
<t>The Controller MAY select Trial Load and Trial Duration values in a way
that would not be possible to achieve using any integer number of data frames.</t>
</dd>
-</dl>
-
-
-<dl>
<dt> </dt>
<dd>
<t>If a particular Trial Load value is not tied to a single Trial,
load value, the report MUST also give the fixed conversion factor that
links the per-interface and multi-interface load values.</t>
</dd>
-</dl>
-
-
-<dl>
<dt> </dt>
<dd>
<t>The per-interface value remains the primary unit, consistent
with prevailing practice in <xref target="RFC1242"></xref>, <xref target="RFC2544"></xref>, and <xref target="RFC2285"></xref>.</t>
</dd>
-</dl>
-
-
-<dl>
<dt> </dt>
<dd>
<t>The last paragraph also applies to other terms related to Load.</t>
An example standardization effort is <xref target="Vassilev"></xref>,
a draft at the time of writing.</t>
</dd>
-</dl>
-
-
-
-
-<dl>
<dt> </dt>
<dd>
<t>Examples of traffic properties include:
- Symmetric bidirectional traffic
- Section 14 of <xref target="RFC2544"></xref>.</t>
</dd>
-</dl>
-
-
-
-<dl>
<dt> </dt>
<dd>
<t>Other traffic properties that need to be somehow specified
</dd>
</dl>
-
</section>
<section anchor="trial-forwarding-ratio"><name>Trial Forwarding Ratio</name>
Only if this is not the case, the test report MUST describe the Traffic Profile
in a detail sufficient to imply how Trial Forwarding Ratio should be calculated.</t>
</dd>
-</dl>
-
-
-<dl>
<dt> </dt>
<dd>
<t>Trial Forwarding Ratio MAY be expressed in other units
if one direction is forwarded without losses, but the opposite direction
does not forward at all, the Trial Forwarding Ratio would be 0.5 (50%).</t>
</dd>
-</dl>
-
-
-<dl>
<dt> </dt>
<dd>
<t>In future extensions, more general ways to compute Trial Forwarding Ratio
</dd>
</dl>
-
<t>Discussion:</t>
<dl>
to the arithmetic average of the individual per-interface forwarding rates
that would be produced by the RFC 2285 procedure.</t>
</dd>
-</dl>
-
-
-
-<dl>
<dt> </dt>
<dd>
<t>For more complex traffic patterns, such as many-to-one as mentioned
</dd>
</dl>
-
<t>Discussion:</t>
<dl>
<t>Trial Effective Duration may be any positive time quantity
chosen by the Measurer to be used for time-based decisions in the Controller.</t>
</dd>
-</dl>
-
-
-<dl>
<dt> </dt>
<dd>
<t>The test report MUST explain how the Measurer computes the returned
An approach is to measure the duration of the whole trial (including all wait times)
and use that as the Trial Effective Duration.</t>
</dd>
-</dl>
-
-
-<dl>
<dt> </dt>
<dd>
<t>This is also a way for the Measurer to inform the Controller about
they are not familiar with,
except when passing Trial Output instances to the Manager.</t>
</dd>
-</dl>
-
-
-<dl>
<dt> </dt>
<dd>
<t>Example of an optional attribute:
</dd>
</dl>
-
</section>
</section>
<section anchor="goal-terms"><name>Goal Terms</name>
<t>Certain trials must reach this minimum duration before a load can be
classified as a lower bound.</t>
</dd>
-</dl>
-
-
-<dl>
<dt> </dt>
<dd>
<t>The Controller may choose shorter durations,
</dd>
</dl>
-
<t>Discussion:</t>
<dl>
<t>Required attributes: Goal Final Trial Duration, Goal Duration Sum, Goal
Loss Ratio and Goal Exceed Ratio.</t>
</dd>
-</dl>
-
-
-<dl>
<dt> </dt>
<dd>
<t>Optional attributes: Goal Initial Trial Duration and Goal Width.</t>
However, it is RECOMMENDED for those implementations
to support missing attributes by providing typical default values.</t>
</dd>
-</dl>
-
-
-<dl>
<dt> </dt>
<dd>
<t>For example, implementations with Goal Initial Trial Durations
<t>Discussion:</t>
-
<dl>
<dt> </dt>
<dd>
</dd>
</dl>
-
</section>
<section anchor="min-load"><name>Min Load</name>
<t>Discussion:</t>
-
<dl>
<dt> </dt>
<dd>
</dd>
</dl>
-
</section>
</section>
</section>
</dd>
</dl>
-
</section>
<section anchor="lower-bound"><name>Lower Bound</name>
</dd>
</dl>
-
</section>
<section anchor="undecided"><name>Undecided</name>
</dd>
</dl>
-
</section>
<section anchor="relevant-lower-bound"><name>Relevant Lower Bound</name>
</dd>
</dl>
-
</section>
<section anchor="conditional-throughput"><name>Conditional Throughput</name>
</dd>
</dl>
-
</section>
<section anchor="goal-results"><name>Goal Results</name>
</dd>
</dl>
-
-
<t>Discussion:</t>
<dl>
<t>When the Search Result is expressed as a mapping, it MUST contain an
entry for every Search Goal instance supplied in the Controller Input.</t>
</dd>
-</dl>
-
-
-<dl>
<dt> </dt>
<dd>
<t>Identical Goal Result instances MAY be listed for different Search Goals,
</dd>
</dl>
-
-
</section>
</section>
<section anchor="architecture-terms"><name>Architecture Terms</name>
and the following subsections finalize their definitions
using terms from previous sections.</t>
-
<t>Note that the architecture also implies the presence of other components,
such as the SUT and the tester (as a sub-component of the Measurer).</t>
can be fully independent from the Controller implementations,
e.g., developed in different programming languages.</t>
-
<section anchor="measurer"><name>Measurer</name>
<t>Definition:</t>
</dd>
</dl>
-
<t>Discussion:</t>
<dl>
rates or to disable all but one transport protocol when testing the
throughput of that protocol."</t>
</dd>
-</dl>
-
-
-<dl>
<dt> </dt>
<dd>
<t>It is REQUIRED for the test report to encompass all the SUT configuration
</dd>
</dl>
-
-
</section>
</section>
<section anchor="compliance"><name>Compliance</name>
<t>Goal Exceed Ratio = 0%</t>
</list></t>
-
<t>Goal Loss Ratio and Goal Exceed Ratio attributes,
are enough to make the Search Goal conditionally compliant.
Adding Goal Final Trial Duration
</section>
<section anchor="methodology-rationale-and-design-considerations"><name>Methodology Rationale and Design Considerations</name>
-
-
<t>This section explains the Why behind MLRsearch. Building on the
normative specification in Section
<xref target="mlrsearch-specification">MLRsearch Specification</xref>,
<t>The biggest</t>
-
<t>difference between MLRsearch and <xref target="RFC2544"></xref> binary search
is in the goals of the search.
<xref target="RFC2544"></xref> has a single goal, based on classifying a single full-length trial
<t>MLRsearch Specification</t>
-
<t>supports multiple Search Goals, making the search procedure
more complicated compared to binary search with single goal,
but most of the complications do not affect the final results much.
a model where some Trial Results (those with high Trial Loss Ratio) are affected
by infrequent effects, causing unsatisfactory repeatability</t>
-
<t>of <xref target="RFC2544"></xref> Throughput results. Refer to Section <xref target="dut-in-sut">DUT in SUT</xref>
for a discussion about noiseful and noiseless ends
of the SUT performance spectrum.
decide whether, when, and how short trial durations are used. The exact
heuristics and controls are left to the discretion of the implementer.</t>
-
<t>While MLRsearch implementations are free to use any logic to select
Trial Input values, comparability between MLRsearch implementations
is only assured when the Load Classification logic
generalized throughput definition - is the presence of a hard
performance limit.</t>
-
<section anchor="hard-performance-limit"><name>Hard Performance Limit</name>
<t>Even if bandwidth of a medium allows higher traffic forwarding performance,
<t>Those limitations should be known and provided as Max Load, Section
<xref target="max-load">Max Load</xref>.</t>
-
<t>But if Max Load is set larger than what the interface can receive or transmit,
there will be a "hard limit" behavior observed in Trial Results.</t>
be generalized - rather than relying solely on the Relevant Lower
Bound - to reflect realistic, limit-aware performance.</t>
-
<t>MLRsearch defines one such generalization,
the <xref target="conditional-throughput">Conditional Throughput</xref>.
It is the Trial Forwarding Rate from one of the Full-Length Trials
one can prove that Conditional Throughput
values may have up to the Goal Loss Ratio relative difference.</t>
-
<t>Setting the Goal Width below the Goal Loss Ratio
may cause the Conditional Throughput for a larger Goal Loss Ratio to become smaller
than a Conditional Throughput for a goal with a lower Goal Loss Ratio,
<t>Note: For explanation clarity variables are taged as (I)nput,
(T)emporary, (O)utput.</t>
-
<t><list style="symbols">
<t>Collect Trial Results: <list style="symbols">
<t>Take all Trial Result instances (I) measured at a given load.</t>
benchmark scores - such as a dedicated "fast-track" test mode that is
never used in normal operation.</t>
-
<t>Any implications for network security arising from the DUT/SUT SHOULD be
identical in the lab and in production networks.</t>
-
-
</section>
<section anchor="acknowledgements"><name>Acknowledgements</name>
</references>
-<?line 4412?>
+<?line 2708?>
<section anchor="load-classification-code"><name>Load Classification Code</name>
-
<t>This appendix specifies how to perform the Load Classification.</t>
<t>Any Trial Load value can be classified,
<t>Although presented as pseudocode, the listing is syntactically valid
Python and can be executed without modification.</t>
-
<t>If values of both variables are computed to be true, the Load in question
is classified as a Lower Bound according to the given Search Goal instance.
If values of both variables are false, the Load is classified as an Upper Bound.
<CODE ENDS>
]]></sourcecode></figure>
-
</section>
<section anchor="conditional-throughput-code"><name>Conditional Throughput Code</name>
<CODE ENDS>
]]></sourcecode></figure>
-
</section>
<section anchor="example-search"><name>Example Search</name>
-
<t>The following example Search is related to
one hypothetical run of a Search test procedure
that has been started with multiple Search Goals.
<c>Undecided</c>
</texttable>
-
<t>This is the last point in time where all goals have this load as Undecided.</t>
</section>
<t>Due to stricter Goal Exceed Ratio, this Conditional Throughput
is smaller than Conditional Throughput of the other two goals.</t>
-
-
-
</section>
</section>
</section>
</back>
<!-- ##markdown-source:
-H4sIAAAAAAAAA9S963Ib15Im+r+eogaO7k1qAPCiiyV2dGtoXbwVLVkak96e
-PQ7HjiJQJKsFoNBVBVL0xImYBznn5eZJTuaXmWvlKhRI2d3n9MyemDZFAlXr
-kitXXr78cjKZZFlXdYvyJP+wWXTVelHm7+u2zX8suqrOz8qimV1nxcVFU97Q
-R97/2Mpv5vVsVSzpW/OmuOwmVdldTi6Wt1eT5aKRj0yOjrN50dFHjg+Pn04O
-X0wOj7Os3Vwsq7at6tX53Zr+9u7N+dusWjcnedds2u748PAFfaxoyuIkr9dt
-dnt1kn9XrmbXy6L5XK2u8p9r+e/3Tb1ZZ59v6RGrrmxWZTd5zUPJZkV3kler
-yzrLZvWcPnqSb9pJ0c6qKltXJzn975t8Vqzot2VeNE1xl+9Vl3mxWOR3Zbuf
-101+XbTX+XXZlFmed/XshP9AP7Z10zXlZXuCR8zLy4JWrKVP2N/vlvJn/mdW
-bLrrujnJcvxvov/NaWj0iQ/T/J/rVdsVq+5uVd9Ws9/C32VZPxSzqvy880N1
-Q9N6VbUz2qK7tiuXbfhTuSyqxUm+/Cxf/S8z/tR0Vi+HR/KXaf6pXhSfe+//
-S1N0n+venx5+602z5m+4l2arulmSLN2UvBQ/vn11dPzkWH88Pjp6YT8eP39q
-Pz598kR/fH70Lf2Y8W6mD3l69PzwJPsmf1Uvl+WKNvz8umrzddF0+UVJHy7z
-y6ppu3wymeT0h1Xd5SxA8/p2lV9suvyvpx/ej2lD85k8gD5SlvN8Xl1e0rav
-urxsZ8W6nGbf/I+TE/3M/5V9Q2+k/3347ujo2Un+aVEWJELL+qZkGQiDrFfj
-vCCx4BHd0g/rpr6p5vT0erW447+Q7JVfiiUdtak98i+fTvKPn8M/P/wzSQA9
-d47f/I+TgzAEzP7Z4ye2bs9ehHV7fsyruWvA39JBmZdLGVmZ1/R/mpw+1Nz9
-kUGcn53TSRXh7ormqqQtuO66dXtycHB7ezstu7aakrgczMsF7VpzwL/421V7
-8MPbv0zoyweHh0d/O3zxgv5L///x9PDJlH7x7PDgqv2bfoT+cnP4+PDJ4dF6
-up5fyqtEU43ozzn9fUS//Ov06OmzJ7tHUnWbabXqDppydjCvF/VVtfrbenMx
-Ldr1y0WxuvrH8u+r+T+eT35882oiz5ocHx49OzyevPtP/+nT67eTN3/fkab6
-xyqIuw1CPs1jePu6qievzt6dT4KCHB7QrK266eV8WtUHM9Kg7cGyJCWBYd3R
-z0W7aUqI4wFpzuJvaxpg+bfumlTd1fV60x2Qcv2bPP8gGcrb1/TInEeQn5ck
-9h/iY/NJ1NojfCko5ceTo0P6zae7T+8eGvj6bi37ScL8L+WsOwifPziaHk+P
-0uGEP+b445heQeNZ5Z+K2efiqiSNPS+/DA/mPen638rJ2XW1LIaHwivTNfSk
-spnytSNiVs8Orrvl4kCuowU9pS3lQmouZ6xRJhdVOzk8TMZ5usp/Wl81xRwH
-OLlm/ArSuc5/KLtbunnkspnVqxUtQv66vKlmZUtLXH5ZV005H+08fs9VRbFC
-0A/nbbWalTz3w6kpE9p+OnFTOar8Xr6W2mpZLQo5rRVdLe64/nm5HOd1emZf
-V21x1ZT8lI6VX9tV9JCC77vLzYJeARU3o79/0MnGMY3lMfI/VpSfy3LNH6k6
-XIjT/BVpr1u6OOdzGt9iQdcS/RV65MQGIf/7xW/lr9jYthzn30/H+ejepX73
-yT/mbd3cFg3f4265SdvlvKm0p6MxTAJSv/mnpqZ5t20yidQ6eEg8XvCakNyS
-Cng69Y/ZeyMLNN33y//64w9v6KP0Q7kou5Jth82aRZp/ako6v7TBrG6LGV9e
-OSuRAW2qK/XP9U0xa3fJPov+l+m8lnN4dDilS+jw6KD6F3pdO715UR1Pj58/
-T+T7+2LJ63ZbddcYxXnQJHQHzfGr9/Tt1eyuL/xBE/Gizso5/avN68uw8Hx4
-P3bd5EPB19zkrFx+Lukf1/Piptqti2ctmQS0GYvFlB55sC5rugMPSroW9Nd8
-Qx60d+1iQ6M5uCThPzw+qLtu+wKgoZOJ1NRkZqyrGQ3/mt5Mi05jxExffSLb
-YHVFypDu4/z0pq7mBZ+208VV3dB6LHkGfynIEl2QYfv7FE3f5F2JbpjQPpCs
-TWaXVweHz1JFQwbHD9/nr+mJdKXSnZjolHN8j+azIuXIiz7KMjZciouW399l
-GVQHvXqDLWnX5ay6JE1Ap5Z2j41pWKH3HqvsPg02yvdsZ/fzeN/kqsUv7jKy
-dqsVdAVZSre5u7fIll4sSJsNuQ/qLOyFC2F/Gm+jvKiWGDcJKWm430p7HUmb
-mFHkLazXZHTnS3v2gp/duGeX7RiyXC3ZzGIF2tJn+eyVtNgX1aLq7jL+AB03
-Mg/1N9Ms83o6Ey19zDq6DMuet9f1ZkFqulxcTmjBuqJakQLI/8zKE1IGm5Em
-QMrTzhMvI3Z9Kk81myoz7Uz/yN/MSRHMMYioBoZGdKS3xpKcFNL9V1ckJuRX
-1Gxm8rKTOWkWbH57XcKmI+U8uybDpsz3oi4im34136eVutNTzFuddyQ/U7zq
-dU3fexmH/Ik+zrv93YefvydPh8x52o9p+DMpZXH8jmiEHy8vq1mF0VR0sa/p
-qzQeN+W445DXeWsDmNJ7S7HOdchVN6Z/0sP593TnYNz0g1tN3iIypwtcpVj8
-Dp9Z0Uat6Aql+dHlxIOvVyWE9cKOhUzgO1Z/rV5itIFLdhea8l83lRpfEKg1
-SVp1QSI3pyMCcaTf08HgfW5otnTL4IRfl1sHgjbMLUR+2dTLfO/2mjRNfGoH
-1+OCJArqeT8sSVy299+ff+jLSFxKloqaLhXa4DkdUAxkzbcfz9wEkybIv8If
-aYXpnLJKpCXKyptisaFp8YnmKbGipJ/5gzdFU9Wblk2zIocJSo7SYoMlGJNj
-xNpHdztr68uOrudykl+Q+TLPVRXyo1rxEPUPpIThqzX8XRaZCb2Krjo6W9ne
-q4/nZ/v5q08/kefdzPl5+Q35TRtyJvma3lR0ok/P3r3KD/If6EMH+dtP35+G
-zw4f5scn+c/XBQwgMqxXYr68DL9THTrjVaKRkNzoeF/G8xCWke6WUvw5fgVf
-KPQQ/Js87Ct/buh7LM3zCsu5qdprFsyoyG1vf8LJnOME8hsuSbe3WCRait2r
-ENztPM6erIeObLv886q+zatLGZeKc5tfbhpoBbzIDWUaH7X3c2mqjq09Pnak
-7ejIl2TsPKiintCJrGs6JaQe+RqA0ereA4PxorSVK3FS6VekrJubqrw9IOes
-qeebGda1LfHfuKCnbMnOx9gNWVvblAWtsbiyazmdsE+dov3nafj5R5jVWxqX
-L9llNZ8vyoGpnUJFcJDon5tiicgBDu2KBq6H+oOGFEQV6KfV74eitbs4Rhlq
-bDetx00lioBWgyfRsLJgpwBqVUZuhggJ2ewzr9clmdscVDkoDp4cPz5+/PiF
-+DPvSOWtzKO/Yp1CQ6Cx0LrZeCHmMrCTBx9+fPj8+dMXzw+z7Jeunv3aW7Vv
-2IQIW9Y3TuZlO2uqi1KUztcZBV57jrGfbA6ILJFglc1SbI+okTJnpLDmNzW0
-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
-Cjcy2f/zekXHFHEZbQPgAeVu9+v2Y9QEwxjCHQnXpcRLCjJ1QoOjm9nZ4vpS
-EMtoYuKN98rZiRCpskBvEIdyJhsVIlSXpfXB9hToez9z2tfX7VSKonXG1s8y
-cdwHWK/39wmF8urmW2rogLcCVAdu56CKxA85wLGrpZUrIj+W0hmW23/O1Jjq
-UMFWVDO2mtc3JXcznAgifDGDg1KEGnDbaSr9pLQs2W0aiN6heXP/WpbA3aFo
-jQc4KvhNK9mnO8cfJNKg8DNkI9uSl3+vN/xyS/RVuBd45l4RKLiJEuro4f6h
-U9PK8bs75t8+2H8Qfvtgus+/N8M+2tszn3go6ERql2OSJ2iMK9vJMzprbglu
-DU6kbNbonUHdjxnQyYyKwbu1C5itXmY+boJTw1KSOXPkHtNWuxdjRgOg38T0
-dLC3tXRf8+XwwA9wSmGC81lK78miXLOxabtWzoQpSAUNWJIm5Ak6E/Ac1V/q
-gayURY/m6o6B0zdLOzPfecMeOepb6TWPoICKeSyDYbxOR2QrMwluh1Eo9PFo
-vSes9BYo+T68dH7D+hCvhUKH5SyeFMefEe9g8nlCnPfXlgmbgxzcziK5v79/
-7O8Bbhwf0jpYnvHd8t1WbVfBakg8NH4VM6phRh1cNAb19rAepaVQZBm21Ur5
-gsShoubaZbFpnSlIPng8BgkesmFi+s78dbA8own62SnpWwN/If6y80+JtVY6
-bgFVJKKh5WY6/F0IbFnZpgaQ4897ql2/z57Vb9ArOfNdB0p+HY8xR3kgS0xi
-X70Q2J1QjO8trtzQ2HV72aRNmRIRF+wcY2rjvGzPO3tGRBdjr1aS7xfS7HJZ
-4ya2zBNcnXcWTwIy2KnLasV14XSF1bqZ5o8b6Puxs+Cr98U5efDxMExMBjaC
-9dLI4dP6FpkrJXRKtsqWIHkYUDG9Fs388Tl1OThdcimMmdkbudSoPnAOHlKA
-l2QjtGTcsCFaLN/5Ikis7/E8f+mcFWledWonoxOL5KM7zlV5TZWO0Fm41ghH
-hJZLZ2GcuRej+AtcM++OQHa5cdp1TkWr5A27p0I5uIdpbAZ4Qe47c2PI0OvG
-H2/c7N3L/ndiSnvpVlevm6tqNc7wC1Kj1XJDXb+b5TXhTaNbe3nu/qj2JgpZ
-KEhIREBXN1x4tCzXl9XfSbD5GiB3rrA7xJeC5wkAHMq0qTKlZOQz3bY/0WTz
-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
+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
+VdstJAoepDPoJZLOdncqFLVYYB5k9+XmSdbsM7Nz7PiFoczqQc8A20CjlEH3
+4+dix+722Xw+z7Ku6rblk/z1cdtVh22Zf1+3bf626Ko6f1cWzXKTFdfXTfmR
+Hvn+bSt/WdXLfbGjt1ZNse7mVdmt59e725v5btvII/NHj7NV0dEjjy8ffzW/
+/HZ++TjL2uP1rmrbqt5f3R3ot1cvrl5m1aF5knfNse0eX15+S48VTVk8yetD
+m93ePMm/K/fLza5oPlT7m/zPtfzvH5r6eMg+3NIQ+65s9mU3f85TyZZF9ySv
+9us6y5b1ih59kh/bedEuqyo7VE9y+r/f5MtiT38t86Jpirv8vFrnxXab35Xt
+RV43+aZoN/mmbMosz7t6+YR/oH+2ddM15bp9giFW5bqgHWvpCfv9bic/839m
+xbHb1M2TLMf/zfV/c5oaPfF6kf9LvW+7Yt/d7evbavm38Lts6+tiWZUfJh+q
+G1rWs6pd0hHdtV25a8NP5a6otk/y3Qd59f9Y8lOLZb0bn8mfFvmP9bb40Pv+
+n5qi+1D3frr/qx+bA7/hPprt62ZHtPSx5K14+/LZo8dfPtZ/Pn706Fv75+Nv
+vrJ/fvXll/rPbx79I/0z49NMB/nq0TeX+s+vv/jSBvn62zDIN49l6Kt3V0RS
+cgpd0dyURBybrju0Tx4+vL29XZRdWy1oXQ9X5ZaGbx7yH/5y0z784eWf5vTy
+w8vLR3+5/PZb+l/6/y8Wl18u6A9fXz68af+ij9AvHy+/uPzy8tFhcVit5VNy
+pc7o55x+P6M//uvi0Vdffzk9k6o7Lqp997Aplw9X9ba+qfZ/ORyvF0V7+Odt
+sb/5ffkP1er3V/O3L57NZaz548tHX18+nr/6L//lx+cv5y/+oaMr9fsqnItN
+Qp7mObx8XtXzZ+9eXc3DTR6f0LKtusV6tajqh0u66u3DXUnUjGnd0b+L9tiU
+u3LftQ/pihd/OdAEy790G7qTN5vDsXtIXOAvMv7DZCovn9OQOc8gvyrbLn8d
+h83nkb2c4aXAPb6YP7qkv/x49+Or+yZ+uDvIeR6a+q/lsnsYnn/4aPF48Sid
+Tvgxx48z+gTNZ5//WCw/FDclsZZV+Wl8Mt8TU/pbOX+3qXbF+FR4Z7qGRiqb
+BfNHIbN6+XDT7bYPhW9uaZS2FM7ZrJdM+vPrqp1fXibzfLrPfzrcNMWqZG6T
+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
+HzanS0Uj8uRISb4tNBtbhbhUYsyFDYQMRtwVWEHHDiqLOABZVNAvH/ZqIBdL
+lObZNvBUsqYwcyCuTlxOkmhGKw22IlyxI2qIMErUNN3OsqT4SOuD1VZBTpou
+pWosjx9aWpa9lrpf3H2UBNDXEAn8IerCfsVavhIFrXIiLtsSPSpa3tgcKCeR
+VJLiuPyW7drgJODi2/xVSEIhVfkD/1iuWlMKLGDe0jVHInFxZ6KnEB9fSFmE
+4hXrqHPLbgmJSBunPUA36bNcZ1rR6+KNVJOba35BQnEfMPnv1AUjGrf58JmY
+mTSk/q5ooPkHxev62NC1nsnp8DzVvnMincxTy4hxGy+HzKZktT3Gym3Ua6Gc
+Ci7nj1KqpNfOmKKEp0rnh6tQiKwCg4v64k78k5QWqGyfqWsAvG4lGV++rhNk
+zLEdLjvcc75gHr1F0SGEvDj3mpR1gQLgro4mUBCe3sOS7tJgEqz67rUIW4wJ
+SUjs7FL0P488VpdszHXtuY7LNIvn2Q5ppdYTP1zxf/98/hsc0hy/XgiF43H7
+mS+g/nqBFbKWLfzbwGRYPPAMOMCi9U6o+c7fe2yPn/NzY8JfXdD0JKoezAe4
+iegDb8sbkjyQiLpvtLnVSvOYEWLRgMgu3v4INbCG99CzkxukgIpoKbK+dS1L
+4YSd+ZrDpiv20I7Kd3WWJo/mFlhpMOu+q7Sw2jxJCJJ6MaQUjSEiiPEloYxg
+bQfrwKpna85oWuVijxBTZ/4vJUq0CYmarlU/QjLC2/duW/s7gayFe8vzRH9i
+TWpYKN3jQVlQ+1TfC5Vfasd448d9Q8I1LkZoahqyi1YlMmAsAwrnzDuWHrrE
+5GmjUKHu3F4aYJCih/QejoV0ZpmwHj388qN4/WBlhLlDRjnJ5KxYWSk7fUBA
+xMKRbSJVA0rdUrcdM/LCEUtgRk432OT4jiQbwF8g+n5YfY81LLLvRLXSBeDF
++voj8kjZIdHVPjc0HLlcGn4Wm7AJ9Rb+no0TiDkwC6dOPx11u6prOLpmSDnU
+iJtYMFzREGr6reCBPe1yKO7aWDyIi56FfnDlZolMpC9rWaopBUQHd4ANcG6J
+GRL7Avnd1PWKrz+9zKg0irzC53TO/x0ZhKQQMojWzxcSZYMIZfa0qQ4hZc/G
+Y5pNJSG2APGzRf6WGSPnPbwfARf62Vfv4z5bZjBweBqJfc+izmsKLyanZd+h
+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
+aVrqPdGzC39hvE1Me693JzzBulkDUWHjL2EeBt63Pt1fWZEjHNL3eQR7xvn5
+1B8AkIX/ogQ5X5qYD0j3yC/lq6MNS1NrVHqbGug92XyeIBIsqwR7HgQCwKAn
+rDFCondzCj1bmAEi3xGRHjW0V1zGpIBgyTr47xfGInZ5jLyQKD1IZuXAMCVG
+qZ5n0B+lBs4+MBWnC5ymI6oZR8qLRc7zWPugxUaoJ/rDzCFaEbV8f+XaXH8p
+nr+mZlcgNzhttMX3le5IGXZ1vQLR1UkQA4LxtJrDoTGsViDmrVf4O2GtBDIV
+XGdcG2b2ng2auXBLqvjw+76Kwr3vE19LiZr+gW7f+7riO1xelqly+hMWm7Rd
+8OydqTnjszboOeO03oGeQ9f3Rag0b6DpRn0bWbuNDEAFxV9P4VG3YSB3pwDB
+YcZG6k8nXqHcpz4AKuFhg8K8uThcIu0IewAQIrQB6QluYJT2HA06xP+1Snk+
+as/70p7b9+jLxcdvSVw136PL/4oe3bM1NN2zTxhpv8h3Ro8u3Z24dDsj59Jt
+jW7g033+ccJFfP8jtaVGqjPYxqHaWzCTGO3PDSJaXkNJbzotfQsNLdv31jp6
+Z6e783mU9M7ODuCCXVTIPpPQ0pxrX5khBg6vGOClTTNbQ/cN1ycaAaxGEi7D
+d+gsXDj9P9lfM3N++AEA
-->