[alto] A unified approach to value schemas and ALTO maps

Wendy Roome <wendy.roome@nokia-bell-labs.com> Tue, 26 July 2016 17:38 UTC

Return-Path: <wendy.roome@nokia-bell-labs.com>
X-Original-To: alto@ietfa.amsl.com
Delivered-To: alto@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id BE0E312D84D for <alto@ietfa.amsl.com>; Tue, 26 Jul 2016 10:38:12 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.921
X-Spam-Level:
X-Spam-Status: No, score=-6.921 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id DmyRgPP7zffG for <alto@ietfa.amsl.com>; Tue, 26 Jul 2016 10:38:11 -0700 (PDT)
Received: from smtp-us.alcatel-lucent.com (us-hpswa-esg-02.alcatel-lucent.com [135.245.18.30]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 29C5312D82F for <alto@ietf.org>; Tue, 26 Jul 2016 10:38:11 -0700 (PDT)
Received: from us70uumx4.dmz.alcatel-lucent.com (unknown [135.245.18.16]) by Websense Email Security Gateway with ESMTPS id 1FA0D41266315 for <alto@ietf.org>; Tue, 26 Jul 2016 17:38:07 +0000 (GMT)
Received: from us70uusmtp4.zam.alcatel-lucent.com (us70uusmtp4.zam.alcatel-lucent.com [135.5.2.66]) by us70uumx4.dmz.alcatel-lucent.com (GMO) with ESMTP id u6QHc9uI012505 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for <alto@ietf.org>; Tue, 26 Jul 2016 17:38:10 GMT
Received: from umail.lucent.com (umail.ndc.lucent.com [135.3.40.61]) by us70uusmtp4.zam.alcatel-lucent.com (GMO) with ESMTP id u6QHc9Ck018784 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for <alto@ietf.org>; Tue, 26 Jul 2016 17:38:09 GMT
Received: from [135.222.152.71] (wdr-i7mbp2.mh.lucent.com [135.222.152.71]) by umail.lucent.com (8.13.8/TPES) with ESMTP id u6QHc6j2014721 for <alto@ietf.org>; Tue, 26 Jul 2016 12:38:08 -0500 (CDT)
User-Agent: Microsoft-MacOutlook/14.6.6.160626
Date: Tue, 26 Jul 2016 13:38:06 -0400
From: Wendy Roome <wendy.roome@nokia-bell-labs.com>
To: IETF ALTO <alto@ietf.org>
Message-ID: <D3BD183E.80D4FC%w.roome@alcatel-lucent.com>
Thread-Topic: A unified approach to value schemas and ALTO maps
Mime-version: 1.0
Content-type: text/plain; charset="US-ASCII"
Content-transfer-encoding: 7bit
Archived-At: <https://mailarchive.ietf.org/arch/msg/alto/c0BuJi8VeGTX_p5a3bhzHx9jJJI>
Subject: [alto] A unified approach to value schemas and ALTO maps
X-BeenThere: alto@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: "Application-Layer Traffic Optimization \(alto\) WG mailing list" <alto.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/alto>, <mailto:alto-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/alto/>
List-Post: <mailto:alto@ietf.org>
List-Help: <mailto:alto-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/alto>, <mailto:alto-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 26 Jul 2016 17:38:12 -0000

Recently we talked about using "value schemas" so that we can add new
value types without defining new media types and message formats.

Here is another take on that approach. It unifies *everything* into one
common message format. Extensions simply require defining new entity
domains and (simple) value types.

So here's my idea. Every ALTO resource boils down to a mapping from 1-,
2-, 3- or 4-tuples to values. The tuple elements are names of entities in
a domain.

Examples:
   Cost Map: (pid, pid)  =>  value
   Endpoint Costs:  (addr, addr) =>  value
   Endpoint Props:  (addr, prop-name)  =>  value
   MultiCost Map:   (pid, pid, cost-type)  =>  value
   MultiCost Calendar Map: (pid, pid, date-range, cost-type)  =>  value
   Network Map:  (cidr)  =>  pid

Note that I flipped the network map around. I think cidr => pid is cleaner
than pid => cidr-array, and it enforces the rule that a cidr is in only
one pid.

With this approach, the meta section of a response would give the domain
for each tuple element, and the value type. For example, here is a
conventional cost map:

   meta:
      tuple-domains: [pid, pid]
      value-type:
         specification: rfc7285
         format: cost-type
         parameters:
             metric: routingcost, mode: numerical
   map:
      pid1:
         pid1: ###,  pid2: ###, ...

The value field gives document that specifies this value format (or a
registered name), a format name that is defined in that document, and any
additional parameters necessary to understand this value.

Here is a multi-cost map:
   meta:
      tuple-domains: [pid, pid, cost-type-name]
      value-types:
         3:
            cost:
               specification: rfc7285
               format: cost-type
               parameters:
                 metric: routingcost, mode: numerical
            delay:
               specification: rfc####
               format: duration
               parameters:
                  metric: propagation-time
   map:
      pid1:
         pid2:
            cost: 123, delay: 2ms

Here the different cost types have different value types. meta.value-types
means that the value depends on the 3d element of the tuple - the
cost-type-name - and gives the value format for each cost-type-name.


So are people interested in pursuing this approach? The good news is that
will unify everything. The bad news is it will replace everything in rfc
7285.

    - Wendy Roome