<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.4 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-olden-ippm-qoo-02" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.0 -->
  <front>
    <title abbrev="QoO">Quality of Outcome</title>
    <seriesInfo name="Internet-Draft" value="draft-olden-ippm-qoo-02"/>
    <author fullname="Magnus Olden">
      <organization>Domos</organization>
      <address>
        <postal>
          <street>Gaustadalléen 21</street>
          <code>0349</code>
          <country>NORWAY</country>
        </postal>
        <email>magnus@domos.no</email>
      </address>
    </author>
    <author fullname="Bjørn Ivar Teigen">
      <organization>Domos</organization>
      <address>
        <postal>
          <street>Gaustadalléen 21</street>
          <code>0349</code>
          <country>NORWAY</country>
        </postal>
        <email>bjorn@domos.no</email>
      </address>
    </author>
    <date year="2024" month="January" day="10"/>
    <area>Transport</area>
    <workgroup>IP Performance Measurement</workgroup>
    <keyword>Quality Attenuation</keyword>
    <keyword>Application Outcomes</keyword>
    <keyword>Quality of Outcome</keyword>
    <keyword>Performance monitoring</keyword>
    <keyword>Network quality</keyword>
    <abstract>
      <?line 82?>

<t>This document describes a new network quality framework named Quality of Outcome (QoO). The QoO framework is unique among network quality frameworks in satisfying all the requirements layed out in "Requirements for a Network Quality Framework Useful for Applications, Users and Operators".</t>
      <t>The framework proposes a way of sampling network quality, setting network quality requirements and a formula for calculating the probability for the sampled network to satisfy network requirements.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://domoslabs.github.io/QoOID/draft-olden-ippm-qoo.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-olden-ippm-qoo/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        IP Performance Measurement Working Group mailing list (<eref target="mailto:ippm@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/ippm/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/ippm/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/domoslabs/QoOID"/>.</t>
    </note>
  </front>
  <middle>
    <?line 88?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>"Requirements for a Network Quality Framework Useful for Applications, Users and Operators" <xref target="draft-teigen-ippm-app-quality-metric-reqs"/> describes a set of requirements for a network quality framework. This document explores how the quality attenuation metric and framework <xref target="TR-452.1"/> can be extended to meet the full set of requirements.</t>
      <t>Quality attenuation is a network quality metric that meets the most of the criteria set out in the requirements; it can capture the probability of a network satisfying application requirements, it is composable, and it can be compared to a variety of application requirements. The part that is yet missing is how to present quality attenuation results to end-users and application developers in an understandable way. We believe a per-application, per application-type, or per-SLA approach is appropriate here. The challenge lies in specifying how to simplify enough without losing too much in terms of precision and accuracy.</t>
      <t>We believe the probabilistic approach is key as the network stack and application's network quality adaptation can be highly complex. Applications and the underlying networking protocols makes separate optimizations based on their perceived network quality over time and saying something about an outcome with absolute certainty will be practically impossible. We can however make educated guesses on the probability of outcomes.</t>
      <t>We propose representing network quality as minimum required throughput and set of latency and loss percentiles. Application developers, regulatory bodies and other interested parties can describe network requirements in the same manner. We propose a formula for a distance measure between perfect and useless quality. This distance measure can, with some assumptions, calculate something that can be simplified into statements such as “A Video Conference has a 93% chance of being lag free on this network” all while making it possible to use the framework both for end-to-end test and analysis from within the network.</t>
      <t>The work proposes a minimum viable framework, and often trades precision for simplicity. The justification for this is to ensure adoption and usability in many different contexts such as active testing from applications and monitoring from network equipment. To counter the loss of precision, we require some parameters that allow for analysis of the precision.</t>
    </section>
    <section anchor="background">
      <name>Background</name>
      <t>The foundation of the framework is Quality Attenuation <xref target="TR-452.1"/>. This work will not go into detail about how to measure Quality Attenuation, but some relevant techniques are:</t>
      <ul spacing="normal">
        <li>
          <t>Active probing with TWAMP Light / STAMP / IRTT</t>
        </li>
        <li>
          <t>Varying Latency Under Load Tests</t>
        </li>
        <li>
          <t>Varying Speed Tests with latency measures</t>
        </li>
        <li>
          <t>Simulating real traffic</t>
        </li>
        <li>
          <t>End-to-end measurements of real traffic</t>
        </li>
        <li>
          <t>TCP SYN ACK / DNS Lookup RTT Capture</t>
        </li>
        <li>
          <t>Estimation</t>
        </li>
      </ul>
      <t>Quality Attenuation represents quality measurements as distributions. Using Latency distributions to measure network quality is nothing new and has been proposed by various researchers/practitioners. The novelty of the Quality Attenuation metric is to view packet loss as infinite (or too late to be of use e.g. &gt; 3 seconds) latency <xref target="TR-452.1"/>.</t>
      <t>Latency Distributions can be gathered via both passive monitoring and active testing. The active testing can use any type of IP traffic. It is OSI Layer and network technology independent, meaning it can be gathered in an end-user application, within some network equipment, or anywhere in between.</t>
      <t>A key assumption behind the choice of latency distribution is that different applications and application categories fail at different points of the latency distribution. Some applications, typically downloads, have lenient latency requirements. Video Conferences typically are sensitive to high 90th percentile latency and to the difference between the 90th and the 99th percentile. Online gaming typically has a low tolerance for high 99th percentile latency. All applications require a minumum level of throughput and a maximum packet loss rate. A network quality metric that aims to generalize network quality must take the latency distribution, throughput, and packet loss into consideration.</t>
      <t>Two distributions can be composed using convolution <xref target="TR-452.1"/>.</t>
    </section>
    <section anchor="sampling-requirements">
      <name>Sampling requirements</name>
      <t>To reach the design goal of being useful in the contexts laid out in "Requirements for a Network Quality Framework Useful for Applications, Users and Operators" <xref target="draft-teigen-ippm-app-quality-metric-reqs"/>, this work imposes no requirement on the time period or the network loading situation. This choice has pros and cons. Latency under load is extremely important, but average or median latency has a role too. However, a network quality metric that does not take latency under load into account is bound to fail at predicting application outcome.</t>
      <t>This framework only requires a latency distribution. If the sampling is done while the network is loaded, latency under load will be part of the distribution, which is encouraged, but is not always possible, for example when passively monitoring the latency of real traffic.</t>
      <t>It takes quite a few samples to have a statistically significant distribution. Modeling a distribution may be a challenging software engineering task, hence we need to sample the latency distribution at certain percentiles. A list of 10 percentiles in a logarithmic-esque fashion has already been suggested in industry [0th, 10th, 25th, 50th, 75th, 90th, 95th, 99th, 99.9th, 100th] and seems adequate. We propose to define a shared set of percentile values to report.</t>
      <t>The framework is flexible when it comes to the direction of traffic that is being sampled, but does require that it is noted whether the latency distribution is measured one-way or two-way. The framework does not require an explicit throughput measurement, but does require a note on the maximal observed throughput in the time period.</t>
      <t>By not requiring a specific number of samples, this framework allows taking 10 samples and calling it a distribution, which of course is not ideal. On the other hand, making the framework overly complex and difficult to adhere to using real-world equipment and applications is the best way to ensure that this framework goes unused. Constraints will vary for different network equipment and applications.</t>
      <t>To make sure we can trust measurements from others and analyze their precision, we require:</t>
      <ul spacing="normal">
        <li>
          <t>Timestamp of first sample</t>
        </li>
        <li>
          <t>Duration of the sampling period</t>
        </li>
        <li>
          <t>Number of samples</t>
        </li>
        <li>
          <t>Type of measurement:  </t>
          <ul spacing="normal">
            <li>
              <t>Cyclic (a sample every Nth ms) - Specify N</t>
            </li>
            <li>
              <t>Bursts (X samples every Nth ms) - Specify X and N</t>
            </li>
            <li>
              <t>Passive (observing traffic and therefore unevenly sampled)</t>
            </li>
          </ul>
        </li>
      </ul>
      <t>By requiring the report of these variables, we ensure that the network measurements can be analyzed for precision and confidence.</t>
    </section>
    <section anchor="describing-network-requirements">
      <name>Describing Network Requirements</name>
      <t>This work builds upon the work already proposed in the Broadband Forum standard called Quality of Experience Delivered (QED/TR-452) <xref target="TR-452.1"/>. In essence, it describes network requirements as a list of percentile and latency requirement tuples. In other words, a network requirement may be expressed as: The network requirement for this app quality level/app/app category/SLA is “at 4 Mbps, 90% of packets needs to arrive within 100 ms, 100% of packets needs to arrive within 200ms”. This list can be as simple as “100% of packets need to arrive within 200ms” or as long as you would like. For the sake of simplicity, the requirements percentiles must match one or more of the percentiles defined in the measurements, i.e., one can set requirements at the [0th, 10th, 25th, 50th, 75th, 90th, 95th, 99th, 99.9th, 100th] percentiles. The last specified percentile marks the acceptable packet loss. I.e. if the 99th percentile is defined, and the 99.9th or 100th percentile is not, 1% packet loss (100-99) is inferred.</t>
      <t>Applications do of course have throughput requirements. With classical TCP and typical UDP flows, latency and packet loss would be enough, as they are bound to create some latency or packet loss when ramping up throughput if subsequently they become hindered by insufficient bandwidth. However, we cannot always rely on monitoring latency exclusively, as low bandwidth may give poor application outcomes without necessarily inducing a lot of latency. Therefore, the network requirements should include a minimum throughput requirement.</t>
      <t>Whether the requirements are one-way or two-way must be specified. Where the requirement is one-way, the direction (uplink or downlink) must be specified. If two-way, a decomposition into uplink and downlink measurements may be specified.</t>
      <t>Until now, network requirements and measurements are what is already standardized in BBF TR-452 (aka QED) framework <xref target="TR-452.1"/>. The novel part of this work is what comes next. A method for going from Network Requirements and Network Measurements to probabilities of outcomes, or Quality of Outcomes if you will.</t>
      <t>To do that we need to make articulating the network requirements a little bit more complicated. A key design goal was to have a distance measure between perfect and useless, and have a way of quantifying what is ‘better’.</t>
      <t>We extend the requirements to include the quality required for perfection and a quality threshold beyond which the application is considered useless.</t>
      <t>This is named Network Requirements for Perfection (NRP). As an example: At 4 Mbps, 99% of packets need to arrive within 100ms, 99.9% within 200ms (implying that 0.1% packet loss is acceptable) for the outcome to be perfect.
Network Requirement points of uselessness (NRPoU): If 99% of the packets have not arrived after 200ms, or 99.9% within 300ms, the outcome will be useless.</t>
      <t>Where the NRPoU percentiles and NRP are a required pair then neither should define a percentile not included in the other - i.e., if the 99.9th percentile is part of the NRPoU then the NRP must also include the 99.9th percentile.</t>
    </section>
    <section anchor="calculating-quality-of-outcome-qoo">
      <name>Calculating Quality of Outcome (QoO)</name>
      <t>At this point we have everything we need to calculate the quality of the application outcome. The QoO. There are 3 scenarios:</t>
      <ol spacing="normal" type="1"><li>
          <t>The network meets all the requirements for perfection. There is a 100% chance that the application is not lagging because of the network</t>
        </li>
        <li>
          <t>The network does meet one of the criteria of uselessness, including bandwidth. There is a 0% chance that the application will work because of the network</t>
        </li>
        <li>
          <t>The network does not meet NRP but is not beyond NRPoU.</t>
        </li>
      </ol>
      <t>1 and 2 require nothing more from the framework. For 3, we will now specify the calculation between to translate these distances to a 0 to 100 measure. We use the percentile pair where the measured latency is the closest to the NRPoU as the application is only as good as its weakest link.</t>
      <t>Mathematically:
 QoO = min(ML, NRP, NRPoU) = (1-(ML-NRP)/(NRPoU-NRP)) * 100</t>
      <t>Essentially, where on the relative distance between Network Requirement for Perfection (NRP) and Network Requirement Point of Uselessness (NRPoU) the Measured Latency (ML) lands, normalized to a percentage.</t>
      <t>Where:
NRP is network requirements for perfection. With minimum throughput and with percentiles and milliseconds
NRPoU is the points of uselessness. With percentiles and milliseconds
i is the length of NRP / NRPoU latency per percentile requirements
ML is Measured Latency in percentiles and milliseconds</t>
      <section anchor="example-requirements-and-measured-latency">
        <name>Example requirements and measured latency:</name>
        <t>NRP: 4 Mbps {99%, 250 ms},{99.9%, 350 ms}
NRPoU: {99%, 400 ms},{99.9%, 401 ms}
Measured Latency: .... 99% = 350ms, 99.9% = 352 ms
Measured Minumum bandwidth: 32 Mbps / 28 Mbps</t>
        <t>Then the QoO is defined:</t>
        <t>QoO</t>
        <artwork><![CDATA[
= Min(
 ((1-(350 ms - 250 ms )/(400 ms - 250 ms))*100),
 ((1-(352 ms - 350 ms)/(401 ms - 350 ms))*100)
 )

= Min (33.33,96.08)

= 33.33
]]></artwork>
        <t>In this example, we would say:
This application/SLA/application category has a 33% chance of being lag-free on this network</t>
      </section>
    </section>
    <section anchor="how-to-find-network-requirements">
      <name>How to find network requirements</name>
      <t>A key advantage of having a measurement that stretches between perfect and useless, as opposed to having a binary (Good/Bad) or other low resolution (Superbad/Bad/OK/Great/Supergreat) metrics, is that we have some leeway. The leeway is useful, for instance: a lower than 20% chance of lag free experience is intuitively not good and a greater than 90% chance of lag free experience is intuitively good --- meaning we don’t have to find perfection for making the QoO metric useful.</t>
      <t>Nevertheless we have to find some points for uselessness and perfection. There is no strict definition of when the network is so bad that the application is useless. For perfect, we may have a definition for some apps, but for apps like web browsing and gaming, lower latency is simply better. But to assist those who wish to make a requirement, we can say that if the end-user experience does not change when reducing the latency, the network quality is sufficient for the Network Requirements for Perfection (NRP) .</t>
      <t>Someone who wishes to make a network requirement for an application in the simplest possible way, should do something along these lines.</t>
      <ul spacing="normal">
        <li>
          <t>Simulate increasing levels of latency</t>
        </li>
        <li>
          <t>Observe the application and note the threshold where the application stops working perfectly</t>
        </li>
        <li>
          <t>Observe the application and note the threshold where the application stops being useful at all</t>
        </li>
      </ul>
      <t>Someone who wishes to find sophisticated network requirements might proceed in this way</t>
      <ul spacing="normal">
        <li>
          <t>Set thresholds for acceptable fps, animation fluidity, i/o latency (voice, video, actions), or other metrics capturing outcomes that directly affects the user experience</t>
        </li>
        <li>
          <t>Create a tool for measuring these user-facing metrics</t>
        </li>
        <li>
          <t>Simulate varying latency distribution with increasing levels of latency while measuring the user facing metrics.</t>
        </li>
      </ul>
      <t>A QoO score at 94 can be communicated as "John's smartphone has a 94% chance of lag-free Video Conferencing", however, this does not mean that at any point of time there is a 6% chance of lag. It means there is a 6% chance of experiencing lag during the entire session/time-period, and the network requirements should be adjusted accordingly.</t>
      <t>The reason for making the QoO metric for a session or time-period is to make it understandable for an end-user, an end-user should not have to relate to the time period the metric is for.</t>
      <section anchor="an-example">
        <name>An example</name>
        <t>Example.com's video-conferencing service requirements can be translated into the QoO Framework. For best performance for video meetings, they specify 4/4 Mbps, 100 ms latency, &lt;1% packet loss, and &lt;30 ms jitter. This can be translated to an NRP:</t>
        <t>NRP example.com video conferencing service:
At minimum 4/4 Mbps.
{0p=70ms,99p=100ms}</t>
        <t>For minimum requirements example.com does not specify anything, but at 500ms latency or 1000ms 99p latency, a video conference is very unlikely to work in a remotely satisfactory way.</t>
        <t>NRPoU
{0p=500,99p=1000ms}</t>
        <t>Of course, it is possible to specify network requirements for Example.com with multiple NRP/NRPoU, for different quality levels (resolutions) or one/two way video and so on. Then one can calculate the QoO at each level.</t>
      </section>
    </section>
    <section anchor="known-weaknesses-and-open-questions">
      <name>Known Weaknesses and open questions</name>
      <t>We have described a way of simplifying how the network requirements of applications can be compared to quality attenuation measurements. The simplification introduces several artifacts that may or may not be significant. If new information emerges that indicate other tradeoffs are more fit for our purpose, we should switch before this Internet Draft moves further. In this section we discuss some known limitations.</t>
      <t>Volatile networks - in particular, mobile cellular networks - pose a challenge for network quality prediction, with the level of assurance of the precition likely to decrease as session duration increases. Historic network conditions for a given cell may help indicate times of network load or reduced transmission power, and their effect on throughput/latency/loss. However: as terminals are mobile, the signal bandwidth available to a given terminal can change by an order of magnitude within seconds due to physical radio factors. These include whether the terminal is at the edge of cell, or undergoing cell handover, the interference and fading from the local environment, and any switch between radio bearers with differing signal bandwidth and transmission-time intervals (e.g. 4G and 5G). This suggests a requirement for measuring quality attenuation to and from an individual terminal, as that can account for the factors described above. How that facility is provisioned onto indiviudal terminals, and how terminal-hosted applications can trigger a quality attenuation query, is an open question.</t>
      <section anchor="missing-temporal-information-in-distributions">
        <name>Missing Temporal Information in Distributions.</name>
        <t>These two latency series: 1,200,1,200,1,200,1,200,1,200 and 1,1,1,1,1,200,200,200,200,200 will have identical distributions, but may have different application performance. Ignoring this information is a tradeoff between simplicity and precision. To capture all information necessary to perfectly capture outcomes we are getting into extreme computational complexity. As an application's performance is bound by how the developers react to varying network performance, meaning nearly all different series of latencies may have different application outcomes.</t>
        <t>It will most likely be necessary to add a time-scale to the application requirement specifications.</t>
      </section>
      <section anchor="subsampling-the-real-distribution">
        <name>Subsampling the real distribution</name>
        <t>Additionally, we cannot capture latency on every packet that is sent. We can probe and sample, but there will always be unknowns. We are now in the realm of probability. Perfection is impossible, but instead of denying this, we should embrace it, which is why talking about the probability of outcomes is the way forward.</t>
      </section>
      <section anchor="assuming-linear-relationship-between-perfect-and-useless-and-that-it-is-not-really-a-probability">
        <name>Assuming Linear Relationship between Perfect and useless (and that it is not really a probability)</name>
        <t>One can conjure up scenarios where 50ms latency is actually worse than 51ms latency as developers may have chosen 50ms as the threshold for changing quality, and the threshold may be imperfect. Taking these scenarios into account would add another magnitude of complexity to determining network requirements and finding a distance measure (between requirement and actual measured capability).</t>
      </section>
      <section anchor="binary-bandwidth-threshold">
        <name>Binary Bandwidth threshold</name>
        <t>Choosing this is to reduce complexity, but we do acknowledge that the applications are not that simple. The defence for this trade off is that insufficient bandwidth will cause queues and therefore latency, and it should be possible to see this. Additionally, network requirements can be set up per quality level (resolution, fps etc.) for the application. However, having too many network requirements also increases the complexity for users of the framework, and it is still unclear if this is the optimal tradeoff.</t>
      </section>
      <section anchor="low-resolution-on-packet-loss">
        <name>Low resolution on Packet Loss</name>
        <t>To ensure simplicity, packet loss is described as infinite latency and the resolution will be bound to the percentiles we chose to sample. There is a good argument that some applications need higher resolution on packet loss for sufficiently describing application outcomes. If this good evidence is presented for this, packet loss should be measured separately and added to the QoO formula.</t>
      </section>
      <section anchor="arbitrary-selection-of-percentiles">
        <name>Arbitrary selection of percentiles:</name>
        <t>There is a need for a selection of percentiles, as we in the name of simplicity can’t use them all. But how should we select them? The 0th (minimal) and 50th (median) percentile have implicit usage by themselves. <xref target="BITAG"/> discusses that the 90th, 98th and 99th percentiles are key for some apps. In general the wisdom is that the higher percentiles are more useful for interactive applications, but only to a certain point. At this point an application sees it as packet loss and may adapt to it. Should we pick the 95th, 96th percentile, the 96.5th or the 97th? We don’t know, and as this is likely not universal across applications and applications classes, we simply have to choose arbitrarily, and to the best of our knowledge.</t>
      </section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation status</name>
      <t>Note to RFC Editor: This section <bcp14>MUST</bcp14> be removed before publication
of the document.</t>
      <t>This section records the status of known implementations of the
protocol defined by this specification at the time of posting of this
Internet-Draft, and is based on a proposal described in <xref target="RFC7942"/>.
The description of implementations in this section is intended to
assist the IETF in its decision processes in progressing drafts to
RFCs. Please note that the listing of any individual implementation
here does not imply endorsement by the IETF. Furthermore, no effort
has been spent to verify the information presented here that was
supplied by IETF contributors. This is not intended as, and must not
be construed to be, a catalog of available implementations or their
features. Readers are advised to note that other implementations may
exist.</t>
      <t>According to <xref target="RFC7942"/>, "this will allow reviewers and working groups
to assign due consideration to documents that have the benefit of
running code, which may serve as evidence of valuable experimentation
and feedback that have made the implemented protocols more mature.
It is up to the individual working groups to use this information as
they see fit".</t>
      <section anchor="qoo-c">
        <name>qoo-c</name>
        <ul spacing="normal">
          <li>
            <t>Link to the open-source repository:  </t>
            <t>
https://github.com/domoslabs/qoo-c</t>
          </li>
          <li>
            <t>The organization responsible for the implementation:  </t>
            <t>
Domos</t>
          </li>
          <li>
            <t>A brief general description:  </t>
            <t>
A C library for calculating Quality of Outcome</t>
          </li>
          <li>
            <t>The implementation's level of maturity:  </t>
            <t>
A complete implentation of the specification described in this document</t>
          </li>
          <li>
            <t>Coverage:  </t>
            <t>
The library is tested with unit tests</t>
          </li>
          <li>
            <t>Licensing:  </t>
            <t>
GPL 2.0</t>
          </li>
          <li>
            <t>Implementation experience:  </t>
            <t>
Tested by the author. Needs additional testing by third parties.</t>
          </li>
          <li>
            <t>Contact information:  </t>
            <t>
Bjørn Ivar Teigen: bjorn@domos.no</t>
          </li>
          <li>
            <t>The date when information about this particular implementation was
last updated:  </t>
            <t>
10th of January 2024</t>
          </li>
        </ul>
      </section>
      <section anchor="goresponsiveness">
        <name>goresponsiveness</name>
        <ul spacing="normal">
          <li>
            <t>Link to the open-source repository:  </t>
            <t>
https://github.com/network-quality/goresponsiveness  </t>
            <t>
The specific pull-request: https://github.com/network-quality/goresponsiveness/pull/56</t>
          </li>
          <li>
            <t>The organization responsible for the implementation:  </t>
            <t>
University of Cincinatti for goresponsiveness as a whole, Domos for the QoO part.</t>
          </li>
          <li>
            <t>A brief general description:  </t>
            <t>
A network quality test written in Go. Capable of measuring RPM and QoO.</t>
          </li>
          <li>
            <t>The implementation's level of maturity:  </t>
            <t>
In active development</t>
          </li>
          <li>
            <t>Coverage:  </t>
            <t>
The QoO part is tested with unit tests</t>
          </li>
          <li>
            <t>Licensing:  </t>
            <t>
GPL 2.0</t>
          </li>
          <li>
            <t>Implementation experience:  </t>
            <t>
Needs testing by third parties</t>
          </li>
          <li>
            <t>Contact information:  </t>
            <t>
Bjørn Ivar Teigen: bjorn@domos.no  </t>
            <t>
William Hawkins III: hawkinwh@ucmail.uc.edu</t>
          </li>
          <li>
            <t>The date when information about this particular implementation was
last updated:  </t>
            <t>
10th of January 2024</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
        <reference anchor="draft-teigen-ippm-app-quality-metric-reqs">
          <front>
            <title>Requirements for a Network Quality Framework Useful for Applications, Users, and Operators</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="TR-452.1" target="https://www.broadband-forum.org/download/TR-452.1.pdf">
          <front>
            <title>TR-452.1: Quality Attenuation Measurement Architecture and Requirements</title>
            <author>
              <organization>Broadband Forum</organization>
            </author>
            <date year="2020" month="September"/>
          </front>
        </reference>
        <reference anchor="BITAG" target="https://www.bitag.org/documents/BITAG_latency_explained.pdf">
          <front>
            <title>Latency Explained</title>
            <author>
              <organization>BITAG</organization>
            </author>
            <date year="2022" month="October"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 407?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA71923Icx5Xte31FHjgcAzj6ggspCTiWZZAgKdgEARGgZYXH
4ajuyu4usbqqVVmFVpuhCH3EPMxEzETM6/zBPJ95Px+hLzl77b0zK6vRkOVj
z1gW2V2dlZed+7L2JVPD4TBp8qawZ2bvizYt8mZjqpm5bptptbR7STqZ1PYe
P1bXe8k0bey8qjdnJi9nVZJk1bRMl/RuVqezZlgVmS2H+Wq1HH5TVcPD48S1
k2XuXF6VzWZF7S5f3L005mcmLVxFneZlZleW/iibvYHZuzx/Rn9VNX16e/dy
Lynb5cTWZ0lGw54l06p0tnStOzNN3dqEZnWSpLVNqaO7Oi3dqqqbvWRd1e/n
ddWu6PHljbmx9ayql2k5tebKpq6t7RLDJe/thppmZ4kZGr/y86axZZs2NF88
Pl+tinzKXz1FXNy8IxSexiMtqzJvqjov5/jljW0wK/ONvJfc0yC0IGN+yjyN
EdLtfUldUIfmFV7C82WaFyAi0fvXuW1mo6qe43laTxf0fNE0K3c2HqMZHuX3
duSbjfFgPKmrtbNjdDDGi/O8WbQTejWrlpUr0okb07ZfXuC3gvbANVG3oc1I
XhvllbQe72KG0aJZFntJkrbNoqpBdOrTmFlbFMJBV+m8bJ25xlv8E80yLfM/
M/XPzAVG4+dWlr3k9r/mWYzKin9yTW0tzfFV2romzdKi+K//sKU5PuJfp1VG
4xyePDnVr23ZgJXfXL/98vyrhzN69vV//Wddmsv7tDZ3Np//tHlNvq7q8u84
raQEVzS0eWdJAqkL30iO3r58fnpy9MkZSRTJjgGHuEW1MrWFLGiLT45PD9Hi
5Rd/el5d2MI/Pjw5weObyxf0hB58fPrkmHtargrmPWH8zDa0MGecnYpcqLA3
TBLZ4HS1GipzD5e2qfPpsLbfuDNekVcvb+03bS5c7Qytw6RBMLxAvayJ8vzk
nbO0E9wskkI3wA81/ZWWmble2TolKXPgz7u3wydPj0dH/THD010iHsuZOYeE
NLRGesC9x9Pd404D7xrlA+KRukqzCZq/rOp2yT+xtjK3dtVYqC9zfHh8KKzF
e+ffv7l4eWa8MK3X69HE9zWcoS8W06xalwU9HvuFjFbZjDp4dnl3/qq31Nc0
ajndmBffroo0L2326JTx6k+aT96kc53FtGU6jPnlPxUy1p+sH0tn5dd+PW0q
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
XPAevXLYiz4f7OoXjqaMCu2dWYmL5AKY4ftqPwzftKO+MVXt3vWZJO8gPSQ5
68Ej5mY7XA46rBX4e2PpjWH+Z1FOz5691HJCQivvU0O27+CRUoko5Bx5viG8
4WQsYZDSftvAYUMerhIoMK9C4maXtRdgoz9cxcvgigGfZEUQM0qzcnz1YaWS
g1yx1idEKtgyqwS+RH4ow01kPXsVObtpS5ajaUh3Tcjss85nBJ5zShgLRSw3
Dlet09jl/mtSoAPNCvCLWoZEFps2XyoL/I7+8P0/Uy+NrX/4/l8k2yw1LA/l
oamCWMV1MiHZPJOyh5kyucQkfSsSP0uyyYpwU5WZ+jFsKiLVwKUkEiW0YSk+
TgOFzzVlOzcew990w++/eXtzQCR14hsyZD0z5xEUOf0JSOAISEBM4s976MDs
w9hvQnL4cLRlhiAswQYehKIsX1MgiREl1yjZsaIopK504MJPrKt6d3AG5aBL
YNCgy+ANZ/XN66AtmDVcVsrroEn0lnIij+OJ+aBUR/tOu/HQPXzC0vb2hnVE
2rHCKs15uSWRNWftqno5RC4iO87uqzBWADoCXIcKcQJeGD1EDHHwTObH4+pX
0ao4OtHj3Qc9sSPxPCqqe6xskYCEOrK8PdADTHL2tCQjF6mGrpYglhid7a6I
pC+KVGPHdD0xjmaJTJ4jv/Bo1EPnUgu2s/6xL4++R64uYxisVQjBG9uSQ2xL
kc45LEdIIkWeTGeugyfH/blwcIWr3hjVbpWl9fl4oPvBvXc4JJrjX5gh86l4
dbsnd7JjclgTTxCsEcVRVScx/xArHDFfH4dAkc+1ssZm09OLpogncMLgSZPu
a1/EJTTwjFWVXWapgptdOs8dzgb1Li6OOcRf7AqJtucooC/3iISAhW0dhDSE
0TxM06jMtEDeoPHxPZEVLe/a2noOg9NP86rKOLeLoIxFTJhYgjAGkegKOU3k
wjn8e5ZwJe+nQFv7V68H6H0gQxzQ0/2jIT0dQiOPRX/x5wPzC6wvSV44LmpC
TwNdSeWLFws+utGZPk+/XRpzlwnoAYK48Q3LLzHNu4falce+8oT0eRBaA1LW
JZxpPmJSMPzhzdL9SOfWa8yzBEyWP+LUbwsnuxk7sCpmz5UP21p3SYyWayI9
kc3Ujd5pN3SEH+0l9z0gGt9wkBFLGCuveH5CzWPEfr2829Vr9PGAcv0Q/MOR
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
Wq6Jb8rEqM8rueOB++WqJJ00jLschecoJtmyhh842YsprmMp5/zaq5vX5nh0
iB+27E2XbJf+pUNVO3It88i84TOAafA3wl0+ov/rcAPdSCZMnU+bmHO474cX
lT+4hlyJjIuP9YR8zH0aKtACdEk1bG0I6zM+K9eu0EvGI+McHkj/m7RsQbnj
w+MnzLrzauve5b+Ji9UR8veJjB/2LhsYTqyv2qLAdSMtX1n//9HjGD2Mn370
twjMO8FAyu7PcyRk06bJ9eRPf0A5GLsmr5t0GYta6BoIH/sy+mnCt53x4dvy
1jWyyhztfVWNcAsYK8NwUBs89/bmihU1Kvb/Sqm8LP1lVFl3v/NOGfOL+W8R
MhGnx2TobxUhY75EmW+6NJ+na9LqzlxeXhJ38Zf14tftFP8FgFE7Hdms/R+W
OCzsHvjdw+uLUJ4nFbvs2vDZabMHiIv/3AZD3TfX/Pntiy/eXb59cYHPt5+f
v34dPiTa4vbz63evL7pP3ZvPr6+uXry5kJfpqek9Svauzr/aE1Czd31zd3n9
5vz13gONzIhEDhKxp0SYSsp6kp4Wf/b85v/8+9ETcvX+FyGP46OjU/L25Msn
Rx8/oS8gtt7kCJ9KvsK6JuRycLyj5PD3NF3ljaRh2OkmdM732NLO/QGU+eOZ
+eVkujp68it9gAX3Hnqa9R4yzR4+efCyEHHHox3DBGr2nm9Ruj/f86963z3d
o4e//Izv+hoeffLZr5KEb5+yUxZpvr8ioDHwz/XFdfiVm16evzl/2Ky3n0DP
hKW5pZaxjfQ6dmAt9HIeooVS+PzhTK4asdmnezPaGrv3nQ4exRVHyf8D+lMQ
DbRmAAA=

-->

</rfc>
