<?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 SYSTEM "rfc2629.dtd">
<!-- 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-01" ipr="trust200902">
  <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 is important for
      network diagnostics by 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 ALTO protocol to provide access to large-scale
      network measurement results, which could be useful to constitute ALTO
      cost map service or endpoint cost service. Potential ALTO protocol
      extension is 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 is important for
      network diagnostics by 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 has defined three basic elements: Measurement
      Agents(MAs), Controllers, and Collectors. Measurement Agents (MAs)
      initiate the actual measurements, which are so-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. The
      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 ALTO server can
      leverage multiple system to collection and aggregate network
      information.</t>

      <t>The document tries to bridge the gap by proposing ALTO protocol to
      access to 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
      constitute ALTO cost map service or endpoint cost service. Potential
      ALTO protocol extension is 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 usefulness 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 potentially aggregated
      network performance measurement results for a certain network. These
      network performance measurement results are measured and gathered using
      LMAP based measurement system. LMAP based measurement system are
      comprised of three components: Measurement Agent (MA),Collector and
      Controller. The MA is located in both ingress node and 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 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 measurement task name,
          task-specific parameters which allow extension, additional tags,
          task start/end time, the result values, etc.</t>
        </list></t>

      <t>The collector then provides results to the repository in the ALTO
      server and format as ALTO information and expose it to the ALTO client,
      see figure 1.</t>

      <figure>
        <artwork><![CDATA[                  +---------------+
                  |               |         +--------+
  +----------+    |  ALTO Server  |         |        |
  |Controller|    | +----------+  |<-------->  ALTO  |
  +------+---+    | |Collector |  |         | Client |
     |   |        | +------^---+  |         |        |
     |   |        +--------+------+         +--------+
     |   |                 |
     |   +-------------+   |
     |                 |   |
     |                 |   |
+----V------+       +--V---+----+
|   Ingress |       |   Egress  |
|     Node  |       |    Node   |
|    +--+   |       |    +--+   |
|    |MA|   |       |    |MA|   |
|    +--+   |       |    +--+   |
+-----------+       +-----------+
]]></artwork>
      </figure>
    </section>

    <section title="Advantages of Using LMAP Measurement Results">
      <t>Using LMAP measurement results makes it possible to query for
      specific, possibly aggregated, results in a flexible way. Otherwise,
      entities interested in measurement results either cannot select what
      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 which wants to know for a given end-user request the average
      download speed by 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 Extension">
      <section title="ALTO cost calendar">
        <t>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, while 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 type such as measurement point or
            report measurement point needs to be introduced to indicate where
            these results are measured and who report 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>Addition cost metrics need to be introduced to describe what
            performance metrics are collected and what their values are.</t>
          </list>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>

    <references/>

    <references/>

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