<?xml version="1.0" encoding="US-ASCII"?>
<!-- This is built from a template for a generic Internet Draft. Suggestions for
     improvement welcome - write to Brian Carpenter, brian.e.carpenter @ gmail.com 
     This can be converted using the Web service at http://xml.resource.org/ -->
<!DOCTYPE rfc>
<!-- You want a table of contents -->
<!-- Use symbolic labels for references -->
<!-- This sorts the references -->
<!-- Change to "yes" if someone has disclosed IPR for the draft -->
<!-- This defines the specific filename and version number of your draft (and inserts the appropriate IETF boilerplate -->
<?rfc sortrefs="yes"?>
<?rfc toc="yes"?>
<?rfc symrefs="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<?rfc topblock="yes"?>
<?rfc comments="no"?>
<rfc category="info" docName="draft-xie-alto-lmap-02" ipr="trust200902" submissionType="IETF">
  <front>
    <title abbrev="ALTO for LMAP">ALTO for Querying LMAP Results</title>

    <author fullname="Chongfeng Xie" initials="C" surname="Xie">
      <organization>China Telecom</organization>

      <address>
        <postal>
          <street/>

          <city>Beijing</city>

          <country>China</country>
        </postal>

        <email>xiechf@chinatelecom.cn</email>
      </address>
    </author>

    <author fullname="Wei Wang" initials="W." surname="Wang">
      <organization>China Telecom</organization>

      <address>
        <postal>
          <street>32 Xuanwumen West St, Xicheng District</street>

          <city>Beijing</city>

          <code>102209</code>
        </postal>

        <email>wangw36@chinatelecom.cn</email>
      </address>
    </author>

    <author fullname="Qiufang Ma" initials="Q." surname="Ma">
      <organization>Huawei</organization>

      <address>
        <postal>
          <street>101 Software Avenue, Yuhua District</street>

          <city>Nanjing</city>

          <region>Jiangsu</region>

          <code>210012</code>

          <country>China</country>
        </postal>

        <email>maqiufang1@huawei.com</email>
      </address>
    </author>

    <!---->

    <date year="2023"/>

    <area>Transport</area>

    <workgroup>Application-Layer Traffic Optimization</workgroup>

    <keyword>ALTO LMAP</keyword>

    <abstract>
      <t>Measuring broadband performance on a large scale for network
      diagnostics is important to providers and users, as well as for public
      policy. The Large-scale Measurement of Broadband Performance (LMAP)
      framework, information model, and protocol have been developed for
      measurement task dissemination, initialization, reporting and
      storing.</t>

      <t>This document uses the ALTO protocol to provide access to large-scale
      network measurement results, which could be useful to constitute the
      ALTO cost map service and the endpoint cost service. Potential ALTO
      protocol extensions are also discussed to better leverage LMAP
      measurement results.</t>
    </abstract>
  </front>

  <middle>
    <section anchor="intro" title="Introduction">
      <t>Measuring broadband performance on a large scale for network
      diagnostics is important to providers and users, as well as for public
      policy. A framework for Large-scale Measurement of Broadband Performance
      (LMAP) <xref target="RFC7594"/> has been developed to coordinate the
      execution of broadband measurements and the collection of measurement
      results across a large network scale.</t>

      <t>The LMAP framework defines three basic elements: Measurement
      Agents(MAs), Controllers, and Collectors. Measurement Agents (MAs)
      initiate the actual measurements, which are called Measurement Tasks.
      The controller instructs one or more MAs and communicates the set of
      Measurement Tasks an MA should perform and when. The Collector accepts
      reports from the MAs with the results from their Measurement Tasks. A
      YANG data model <xref target="RFC7950"/> has been defined for LMAP
      platforms <xref target="RFC8194"/>.</t>

      <t>The Application-Layer Traffic Optimization (ALTO) protocol <xref
      target="RFC7285"/> provides a solution to expose network information to
      applications. While the ALTO server can provide an abstract and unified
      view to the ALTO client, it remains undefined how the ALTO server can
      leverage multiple systems to collection and aggregate network
      information.</t>

      <t>This document tries to bridge the gap by proposing the ALTO protocol
      to access large-scale network measurement results in the context of
      Large-scale Measurement of Broadband Performance (LMAP) <xref
      target="RFC7594"/>. The measurement result reports could be useful to
      support the ALTO cost map service or endpoint cost service. Potential
      ALTO protocol extensions are also discussed to better leverage LMAP
      measurement results.</t>
    </section>

    <section title="Requirements Language">
      <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 target="RFC8174"/> when, and only when,
      they appear in all capitals, as shown here.</t>
    </section>

    <section anchor="def" title="Example Use Cases">
      <t>To motivate the proposal of ALTO for querying LMAP results, consider
      some key use cases defined in <xref target="RFC7536"/>:<list
          style="symbols">
          <t>Broadband network maintenance and monitoring<vspace/>A network
          operator needs to understand the performance of their networks, the
          performance of the suppliers (downstream and upstream networks), the
          performance of Internet access services, and the impact that such
          performance has on the experience of their customers. Largely, the
          processes that ISPs operate (which are based on network measurement)
          include Identifying, isolating, and fixing problems, Design and
          planning, understanding the quality experienced by customers,
          Understanding the impact and operation of new devices and
          technology.</t>

          <t>Broadband performance benchmarking<vspace blankLines="1"/>A
          regulator may want to evaluate the performance of the Internet
          access services offered by operators.<vspace blankLines="1"/>While
          each jurisdiction responds to distinct consumer, industry, and
          regulatory concerns, much commonality exists in the need to produce
          datasets that can be used to compare multiple Internet access
          service providers, diverse technical solutions, geographic and
          regional distributions, and marketed and provisioned levels and
          combinations of broadband Internet access services.<vspace
          blankLines="1"/>Regulators may want to publish performance measures
          of different ISPs as background information for end users. They may
          also want to track the growth of high-speed broadband deployment, or
          to monitor the traffic management practices of Internet
          providers.</t>
        </list></t>
    </section>

    <section title="Solution Overview">
      <t>This document addresses how to retrieve aggregated network
      performance measurement results for a certain network. These network
      performance measurement results are measured and gathered using the LMAP
      based measurement system. The LMAP based measurement system is comprised
      of three components: Measurement Agent (MA),Collector and Controller.
      The MA is located in both the ingress node and the egress node and
      instructed by the Controller to monitor a particular traffic flowing
      toward a given destination and to send the Report to the Collector. The
      Report contains:<list style="symbols">
          <t>Date and time when the report was sent</t>

          <t>Agent-id or group-id to identify the Measurement Agent (group)
          from which the report originates</t>

          <t>the actual Measurement Results, including the measurement task
          name, the task-specific parameters which allow extension, the
          additional tags, the task start/end time, the result values,
          etc.</t>
        </list></t>

      <t>The collector then provides results to the repository in the ALTO
      server, formats it as ALTO information, and exposes it to the ALTO
      client, see <xref target="LMAP-ALTO"/>.</t>

      <figure anchor="LMAP-ALTO">
        <artwork>                  +---------------+
                  |               |         +--------+
  +----------+    |  ALTO Server  |         |        |
  |Controller|    | +----------+  |&lt;--------&gt;  ALTO  |
  +------+---+    | |Collector |  |         | Client |
     |   |        | +------^---+  |         |        |
     |   |        +--------+------+         +--------+
     |   |                 |
     |   +-------------+   |
     |                 |   |
     |                 |   |
+----V------+       +--V---+----+
|   Ingress |       |   Egress  |
|     Node  |       |    Node   |
|    +--+   |       |    +--+   |
|    |MA|   |       |    |MA|   |
|    +--+   |       |    +--+   |
+-----------+       +-----------+
</artwork>
      </figure>
    </section>

    <section title="Advantages of Using LMAP Measurement Results">
      <t>It must be possible to query for specific, possibly aggregated,
      results in a flexible way. Otherwise, entities interested in measurement
      results either cannot select the kind of result aggregation they desire,
      or must always fetch large amounts of detailed results and process these
      huge datasets themselves. The need for a flexible mechanism to query for
      dedicated, partial results becomes evident when considering use cases
      where a service provider or a process wants to use certain measurement
      results in an automated fashion. For instance, consider a video
      streaming service provider that wants to know for a given end-user
      request the average download speed of the end user's access provider in
      the end user's region (e.g. to optimize/parametrize its http adaptive
      streaming service). Or consider a website which is interested in
      retrieving average connectivity speeds for users depending on access
      provider, region, or type of contract (e.g. to be able to adapt web
      content on a per-request basis according to such statistics).</t>
    </section>

    <section title="Proposed ALTO protocol extensions">
      <section title="ALTO cost calendar">
        <t>The ALTO cost calendar defined in RFC 8896 allows an ALTO Server to
        provide a sequence of network costs for a given duration of time. It
        provides the capability for applications to figure out the best time
        to schedule data transfers and also to proactively manage application
        traffic given predictable events, such as an expected spike in traffic
        due to crowd gathering (concerts, sports, etc.), traffic-intensive
        holidays, and network maintenance <xref target="RFC8896"/>.</t>

        <t>ALTO cost calendar defines "time-interval-size" and
        "number-of-intervals" as the calendar attributes to specify the time
        interval size and the number of intervals provided in the calendar,
        specifically. The calendar mode now seems more like a periodic
        recurrence, while lack of a more comprehensive expression of calendar
        time. For example, an application may want to know the network cost
        metric between two specific endpoints for every 15-minute interval
        between 12:00 p.m. and 1:00 p.m., Monday through Wednesday. It is
        possible for LMAP to return that result by configuring the event that
        triggered the execution of the measurement schedule under the
        /lmap/schedules subtree. This requires an extension to ALTO cost
        calendar to support the exposure to ALTO client.</t>
      </section>

      <section title="Other Potential ALTO Protocol Extensions">
        <t>In addition, some ALTO protocol extensions need to be considered.
        For example, <list style="symbols">
            <t>Additional entity property types such as measurement points or
            report measurement points need to be introduced to indicate where
            these results are measured and who reports these measurement
            results</t>

            <t>Additional entity property type such as task name or program
            name needs to be introduced to express what task is performed</t>

            <t>Additional cost metrics need to be introduced to describe what
            performance metrics are collected and what their values are</t>
          </list></t>

        <t>Comment: Should we expose LMAP details to ALTO clients?</t>

        <t>Comment from Luis: how PIDs defined for the measurement agents
        could correlate with conventional PIDs, i.e., those representing IP
        address pools.</t>
      </section>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>TBD</t>
    </section>

    <section title="Acknowledgements">
      <t>This work provides approach to get access to large scale broadband
      network performance data and has benefited from the discussions of
      large-scale network measurement data retrieval over the years.</t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>This document has no requests to IANA.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc include="reference.RFC.2119"?>

      <?rfc include="reference.RFC.8174"?>

      <?rfc include="reference.RFC.7594"?>

      <?rfc include="reference.RFC.7536"?>

      <?rfc include="reference.RFC.7285"?>

      <?rfc include="reference.RFC.7950"?>

      <?rfc include="reference.RFC.8194"?>

      <?rfc include="reference.RFC.8896"?>
    </references>

    <section title="Example LMAP Report">
      <figure>
        <artwork>The LMAP report below is in XML [W3C.REC-xml-20081126].
   &lt;rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"
        message-id="1"&gt;
     &lt;report xmlns="urn:ietf:params:xml:ns:yang:ietf-lmap-report"&gt;
       &lt;date&gt;2015-10-28T13:27:42+02:00&lt;/date&gt;
       &lt;agent-id&gt;550e8400-e29b-41d4-a716-446655440000&lt;/agent-id&gt;
       &lt;result&gt;
         &lt;schedule&gt;S1&lt;/schedule&gt;
         &lt;action&gt;A1&lt;/action&gt;
         &lt;task&gt;update-ping-targets&lt;/task&gt;
         &lt;start&gt;2016-03-21T10:48:55+01:00&lt;/start&gt;
         &lt;end&gt;2016-03-21T10:48:57+01:00&lt;/end&gt;
         &lt;status&gt;0&lt;/status&gt;
       &lt;/result&gt;
       &lt;result&gt;
         &lt;schedule&gt;S1&lt;/schedule&gt;
         &lt;action&gt;A2&lt;/action&gt;
         &lt;task&gt;ping-all-targets&lt;/task&gt;
         &lt;start&gt;2016-03-21T10:48:55+01:00&lt;/start&gt;
         &lt;end&gt;2016-03-21T10:48:57+01:00&lt;/end&gt;
         &lt;status&gt;0&lt;/status&gt;
         &lt;table&gt;
           &lt;column&gt;target&lt;/column&gt;
           &lt;column&gt;rtt&lt;/column&gt;
           &lt;row&gt;
             &lt;value&gt;2001:db8::1&lt;/value&gt;
             &lt;value&gt;42&lt;/value&gt;
           &lt;/row&gt;
           &lt;row&gt;
             &lt;value&gt;2001:db8::2&lt;/value&gt;
             &lt;value&gt;24&lt;/value&gt;
           &lt;/row&gt;
         &lt;/table&gt;
       &lt;/result&gt;
       &lt;result&gt;
         &lt;schedule&gt;S2&lt;/schedule&gt;
         &lt;action&gt;A1&lt;/action&gt;
         &lt;task&gt;traceroute&lt;/task&gt;
         &lt;option&gt;
           &lt;id&gt;target&lt;/id&gt;
           &lt;name&gt;target&lt;/name&gt;
           &lt;value&gt;2001:db8::1&lt;/value&gt;
         &lt;/option&gt;
         &lt;option&gt;
           &lt;id&gt;csv&lt;/id&gt;
           &lt;name&gt;--csv&lt;/name&gt;
         &lt;/option&gt;
         &lt;start&gt;2016-03-21T10:48:55+01:00&lt;/start&gt;
         &lt;end&gt;2016-03-21T10:48:57+01:00&lt;/end&gt;
         &lt;status&gt;1&lt;/status&gt;
         &lt;table&gt;
           &lt;column&gt;hop&lt;/column&gt;
           &lt;column&gt;ip&lt;/column&gt;
           &lt;column&gt;rtt&lt;/column&gt;
           &lt;row&gt;
             &lt;value&gt;1&lt;/value&gt;
             &lt;value&gt;2001:638:709:5::1&lt;/value&gt;
             &lt;value&gt;10.5&lt;/value&gt;
           &lt;/row&gt;
           &lt;row&gt;
             &lt;value&gt;2&lt;/value&gt;
             &lt;value&gt;?&lt;/value&gt;
             &lt;value&gt;&lt;/value&gt;
           &lt;/row&gt;
         &lt;/table&gt;
       &lt;/result&gt;
       &lt;result&gt;
         &lt;schedule&gt;S2&lt;/schedule&gt;
         &lt;action&gt;A2&lt;/action&gt;
         &lt;task&gt;traceroute&lt;/task&gt;
         &lt;option&gt;
           &lt;id&gt;target&lt;/id&gt;
           &lt;name&gt;target&lt;/name&gt;
           &lt;value&gt;2001:db8::2&lt;/value&gt;
         &lt;/option&gt;
         &lt;option&gt;
           &lt;id&gt;csv&lt;/id&gt;
           &lt;name&gt;--csv&lt;/name&gt;
         &lt;/option&gt;
         &lt;start&gt;2016-03-21T10:48:55+01:00&lt;/start&gt;
         &lt;end&gt;2016-03-21T10:48:57+01:00&lt;/end&gt;
         &lt;status&gt;1&lt;/status&gt;
         &lt;table&gt;
           &lt;column&gt;hop&lt;/column&gt;
           &lt;column&gt;ip&lt;/column&gt;
           &lt;column&gt;rtt&lt;/column&gt;
           &lt;row&gt;
             &lt;value&gt;1&lt;/value&gt;
             &lt;value&gt;2001:638:709:5::1&lt;/value&gt;
             &lt;value&gt;11.8&lt;/value&gt;
           &lt;/row&gt;
           &lt;row&gt;
             &lt;value&gt;2&lt;/value&gt;
             &lt;value&gt;?&lt;/value&gt;
             &lt;value&gt;&lt;/value&gt;
           &lt;/row&gt;
         &lt;/table&gt;
       &lt;/result&gt;
     &lt;/report&gt;
   &lt;/rpc&gt;</artwork>
      </figure>
    </section>
  </back>
</rfc>
