<?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.1 (Ruby 3.0.5) -->
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc editing="no"?>
<?rfc tocompact="yes"?>
<?rfc iprnotified="no"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-gao-alto-composition-mode-00" category="std" consensus="true" tocDepth="3" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.2 -->
  <front>
    <title abbrev="ALTO-COMP">ALTO Extension: Composition Mode of Cost Maps</title>
    <seriesInfo name="Internet-Draft" value="draft-gao-alto-composition-mode-00"/>
    <author initials="K." surname="Gao" fullname="Kai Gao">
      <organization>School of Cyber Science and Engineering, Sichuan University</organization>
      <address>
        <postal>
          <street>No.24 South Section 1, Yihuan Road</street>
          <city>Chengdu</city>
          <code>610000</code>
          <country>China</country>
        </postal>
        <email>kaigao@scu.edu.cn</email>
      </address>
    </author>
    <date/>
    <area>Application</area>
    <workgroup>ALTO</workgroup>
    <abstract>
      <?line 64?>

<t>This document introduces an extension to the Application-Layer Traffic
Optimization (ALTO) protocol, which enables announcements of the composition
modes of multiple cost map services. Specifically, the composition mode defines
how the results of multiple cost map services are combined to get the final
prediction between two network endpoints. This extension allows ALTO servers to
improve the accuracy of the prediction model at similar map sizes, and to
efficiently enable differentiated services.</t>
    </abstract>
  </front>
  <middle>
    <?line 74?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Application-Layer Traffic Optimization (ALTO) protocol provides abstractions
for application operators and/or end users to query network distance or property
information. Specifically, ALTO has defined network map and cost map, which
typically are used together, to provide a prediction model of distance
information between endpoints in a network.</t>
      <t>Given the scale of the Internet today, it is unlikely that the prediction model
can overfit. Thus, with higher model complexity, an ALTO service tends to
provide better accuracy from the same implementation method. As a consequence,
operators of the ALTO maps have to make the trade-off between service quality
(accuracy of the predicated value) and model complexity (sizes of the maps).</t>
      <t>Currently, there is no standard way of composing the prediction results from
multiple ALTO cost maps. Clients either only request a single pair of network
and cost maps, or blindly select ALTO maps and compose the results. These
approaches either make inefficient trade-offs, i.e., achieving substantial lower
accuracy gains than occupied map sizes, or make incorrect use of the servers'
exposed maps, i.e., the composition mode is different from how the server
internally constructs the models.</t>
      <t>This extension is motivated by the ensemble method in machine learning
<xref target="ENSEMBLE"/>. Ensemble method uses multiple prediction models to improve the
"efficiency" and can typically achieve higher accuracy with the same model
complexity. When the models are composed (or "ensembled") using the boosting
method <xref target="BOOSTING"/>, models are ordered and higher-order models are trained not
directly with the samples but residuals (prediction errors) of lower-order
models. Thus, model accuracy and model complexity typically grow simultaneously
with the number of models -- in the context of ALTO, the number of maps. Thus,
an ALTO server may realize differentiated service by controlling the access to
higher-order maps.</t>
      <t>Specifically, this extension defines a new type of ALTO resource called ALTO
composition advertisement <xref target="alto-comp"/>. The resource specifies the list of ALTO cost
maps and how they are intended to be composed.</t>
    </section>
    <section anchor="conventions-and-terminology">
      <name>Conventions and Terminology</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
"SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be
interpreted as described in RFC 2119 [RFC2119].</t>
      <t>All numeric values are in network byte order. Values are unsigned unless
otherwise indicated. Literal values are provided in decimal or hexadecimal as
appropriate. Hexadecimal literals are prefixed with "0x" to distinguish them
from decimal literals.</t>
      <t>This document reuses the terms defined in RFC 7285 <xref target="RFC7285"/>.</t>
    </section>
    <section anchor="composition-modes">
      <name>Composition Modes</name>
      <t>This document has some requirements on the cost maps that can be composed. For
cost maps that satisfy these requirements, 3 different composition modes are
specified to define how the results of these maps must be combined.</t>
      <section anchor="basic-requirements">
        <name>Basic Requirements</name>
        <t>This extension has the following requirements: First, the cost maps to be
composed must support a common cost type. Second, the prediction using a network
map and a cost map must follow the same process. Specifically, for a given pair
of source and destination network hosts (identified by their IP addresses), the
prediction result must be computed as follows:</t>
        <ol spacing="normal" type="1"><li>
            <t>Find the source PID with the longest matching prefix for the source host.</t>
          </li>
          <li>
            <t>Find the destination PID with the longest matching prefix for the destination host.</t>
          </li>
          <li>
            <t>The prediction result is the distance between the source PID and the destination PID.</t>
          </li>
        </ol>
      </section>
      <section anchor="mode-spec">
        <name>Composition Mode and Result Ensembling</name>
        <section anchor="all">
          <name>All</name>
          <t>This composition mode is indicated by the string "all".</t>
          <t>If the composition mode is "all", for each source and destination hosts, the
client MUST compute the (weighted) sum of the prediction results from each cost
map and its corresponding network map. This mode implies that missing the
prediction result of any cost map may lead to substantial prediction error.</t>
        </section>
        <section anchor="random">
          <name>Random</name>
          <t>This composition mode is indicated by the string "random".</t>
          <t>If the composition mode is "random", the client MAY obtain a prediction result
by computing the (weighted) average of prediction results from any non-empty
subset of the cost maps. This mode typically implies that the maps are generated
using a bagging method, e.g., random forests.</t>
        </section>
        <section anchor="gradient">
          <name>Gradient</name>
          <t>This composition mode is indicated by the string "gradient".</t>
          <t>If the composition mode is "gradient", the client MUST interpret the cost maps
as an ordered list and MAY obtain a prediction result by computing the
(weighted) sum of the first K maps, where K is an arbitrary number that is no
less than 1 and no greater than the number of cost maps. This mode typically
implies that the maps are generated using a boosting method. It must be noted
that prediction results of higher-order maps are useless without the results of
lower-order maps in this mode.</t>
        </section>
      </section>
    </section>
    <section anchor="alto-comp">
      <name>ALTO Composition Advertisement</name>
      <section anchor="media-type">
        <name>Media Type</name>
        <t>The composition advertisement resource is a virtual resource and the media type
is only used to identify the type of the resource. The "media-type" field in its
IRD entry MUST be "application/alto-composition+json".</t>
      </section>
      <section anchor="http-method">
        <name>HTTP Method</name>
        <t>The composition advertisement resource is a virtual resource and does not accept
any HTTP method.</t>
      </section>
      <section anchor="accept-input-parameters">
        <name>Accept Input Parameters</name>
        <t>None.</t>
      </section>
      <section anchor="capabilities">
        <name>Capabilities</name>
        <t>The capabilities of a composition advertisement is a JSON object of type
CompAdvCapabilities:</t>
        <artwork><![CDATA[
    object {
        JSONString  comp-mode;
        JSONString  cost-type-names<1..*>;
        [JSONNumber weights<1..*>;]
    } CompAdvCapabilities;
]]></artwork>
        <t>with fields:</t>
        <t>comp-mode:
~ A JSONString whose value MUST either be "all", "random" or "gradient", as
  introduce in <xref target="mode-spec"/>.</t>
        <t>cost-type-names:
~ A list of cost type names. Each cost type name MUST appear in the "cost-types"
  field in the "meta" field of the IRD, and MUST appear in the "cost-type-names"
  of each cost map whose resource ID is in the entry's "uses" field of the
  composition advertisement resource. The cost mode of this cost type MUST be
  "numerical".</t>
        <t>weights:
~ An optional list of weight coefficient for each cost map in the "uses" field
  of this resource. The length of this option MUST be equal to the length of the
  "uses" field.</t>
      </section>
      <section anchor="uses">
        <name>Uses</name>
        <t>The resource ID of each cost map that may be composed as instructed by the
capabilities of this resource.</t>
      </section>
      <section anchor="response">
        <name>Response</name>
        <t>None.</t>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC7285">
          <front>
            <title>Application-Layer Traffic Optimization (ALTO) Protocol</title>
            <author fullname="R. Alimi" initials="R." role="editor" surname="Alimi"/>
            <author fullname="R. Penno" initials="R." role="editor" surname="Penno"/>
            <author fullname="Y. Yang" initials="Y." role="editor" surname="Yang"/>
            <author fullname="S. Kiesel" initials="S." surname="Kiesel"/>
            <author fullname="S. Previdi" initials="S." surname="Previdi"/>
            <author fullname="W. Roome" initials="W." surname="Roome"/>
            <author fullname="S. Shalunov" initials="S." surname="Shalunov"/>
            <author fullname="R. Woundy" initials="R." surname="Woundy"/>
            <date month="September" year="2014"/>
            <abstract>
              <t>Applications using the Internet already have access to some topology information of Internet Service Provider (ISP) networks. For example, views to Internet routing tables at Looking Glass servers are available and can be practically downloaded to many network application clients. What is missing is knowledge of the underlying network topologies from the point of view of ISPs. In other words, what an ISP prefers in terms of traffic optimization -- and a way to distribute it.</t>
              <t>The Application-Layer Traffic Optimization (ALTO) services defined in this document provide network information (e.g., basic network location structure and preferences of network paths) with the goal of modifying network resource consumption patterns while maintaining or improving application performance. The basic information of ALTO is based on abstract maps of a network. These maps provide a simplified view, yet enough information about a network for applications to effectively utilize them. Additional services are built on top of the maps.</t>
              <t>This document describes a protocol implementing the ALTO services. Although the ALTO services would primarily be provided by ISPs, other entities, such as content service providers, could also provide ALTO services. Applications that could use the ALTO services are those that have a choice to which end points to connect. Examples of such applications are peer-to-peer (P2P) and content delivery networks.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7285"/>
          <seriesInfo name="DOI" value="10.17487/RFC7285"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="ENSEMBLE">
          <front>
            <title>Ensemble learning</title>
            <author initials="T. G." surname="Dietterich" fullname="Thomas G. Dietterich">
              <organization>Oregon State University</organization>
            </author>
            <date year="2002"/>
          </front>
          <seriesInfo name="The handbook of brain theory and neural networks 2.1 (2002)" value="110-125."/>
        </reference>
        <reference anchor="BOOSTING">
          <front>
            <title>Stochastic gradient boosting.</title>
            <author initials="J. H." surname="Friedman" fullname="Jerome H. Friedman">
              <organization>Stanford University</organization>
            </author>
            <date year="1999"/>
          </front>
          <seriesInfo name="Computational statistics &amp; data analysis 38.4 (2002): 367-378." value=""/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
