Internet DRAFT - draft-wang-alto-ecs-flows

draft-wang-alto-ecs-flows







ALTO Working Group                                               X. Shen
Internet-Draft                                                  J. Zhang
Intended status: Standards Track                                 J. Wang
Expires: October 23, 2016                              Tongji University
                                                                Q. Xiang
                                                  Tongji/Yale University
                                                          April 21, 2016


            ALTO Extension: Endpoint Cost Service for Flows
                      draft-wang-alto-ecs-flows-01

Abstract

   The Endpoint Cost Service (ECS) has limitations to illustrate the
   network condition and to work with the OpenFlow protocol.  This
   document extends ECS to improve the Application-Layer Traffic
   Optimization (ALTO) protocol by (1) defining more types of endpoint
   address such as port number, protocol type, domain and etc; (2)
   adding flow constraints.

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at http://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on October 23, 2016.

Copyright Notice

   Copyright (c) 2016 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect



Shen, et al.            Expires October 23, 2016                [Page 1]

Internet-Draft                  ECS Flow                      April 2016


   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
     1.1.  Terminology . . . . . . . . . . . . . . . . . . . . . . .   3
     1.2.  Requirements Language . . . . . . . . . . . . . . . . . .   3
     1.3.  Changes Since Version -00 . . . . . . . . . . . . . . . .   3
   2.  Motivations . . . . . . . . . . . . . . . . . . . . . . . . .   3
   3.  Overview Of Approach  . . . . . . . . . . . . . . . . . . . .   6
     3.1.  Extend Endpoint Abstraction . . . . . . . . . . . . . . .   6
     3.2.  Strategy for Multi-Path . . . . . . . . . . . . . . . . .   7
     3.3.  Compatibility with Legacy Clients . . . . . . . . . . . .   8
     3.4.  Endpoint Cost Resources . . . . . . . . . . . . . . . . .   8
   4.  Design Principles . . . . . . . . . . . . . . . . . . . . . .   8
     4.1.  Path Oblivious Principle  . . . . . . . . . . . . . . . .   8
     4.2.  Full Relationship Principle . . . . . . . . . . . . . . .   9
   5.  Protocol Extension for Flow-Extended ECS  . . . . . . . . . .   9
     5.1.  Endpoint Cost Service Extensions  . . . . . . . . . . . .   9
       5.1.1.  Accepted Input Parameters . . . . . . . . . . . . . .   9
     5.2.  ALTO Address Type Registry Extensions . . . . . . . . . .  10
   6.  Interoperation and Exception Handling . . . . . . . . . . . .  10
     6.1.  Feedback when Multi-Path Detected . . . . . . . . . . . .  10
   7.  Examples  . . . . . . . . . . . . . . . . . . . . . . . . . .  11
     7.1.  Information Resource Directory  . . . . . . . . . . . . .  11
     7.2.  Endpoint Cost Service . . . . . . . . . . . . . . . . . .  12
   8.  Discussion  . . . . . . . . . . . . . . . . . . . . . . . . .  13
     8.1.  Endpoint Cost Service vs. Flow Cost Service . . . . . . .  14
     8.2.  The Same Purpose Principle  . . . . . . . . . . . . . . .  14
     8.3.  Integration with Incremental Update . . . . . . . . . . .  14
     8.4.  Automatic Exploring Fine-Grained Path . . . . . . . . . .  15
   9.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  15
   10. Privacy And Security Considerations . . . . . . . . . . . . .  15
   11. Normative References  . . . . . . . . . . . . . . . . . . . .  15
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  16

1.  Introduction

   ECS is a basic service of the ALTO services defined in [RFC7285].
   Based on the simple host model when defining endpoints, ECS defined
   in [RFC7285] may not work well in an emerging settings such as
   Software Defined Networking (SDN) based settings, where network
   routing decisions can be flow based.  In this document, we present an
   extended ECS for such new settings.




Shen, et al.            Expires October 23, 2016                [Page 2]

Internet-Draft                  ECS Flow                      April 2016


1.1.  Terminology

   This document uses terms defined as follows:

   o  {1.2.3}: References of this form are to sections in the ALTO
      protocol specification [RFC7285].

   o  And other terms defined in {8.2} of [RFC7285].

1.2.  Requirements Language

   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].

1.3.  Changes Since Version -00

   o  Change the format of API for clients' request.  This design is
      more concise and has better compatibility.  It does not modify the
      IRD of ECS.  Section 3.1 introduces a new abstraction for Endpoint
      which defines the ConnectionURI to represent an endpoint.  And a
      specific flow can be determined by a pair of ConnectionURI.

   o  Add some design principles in section 4.

   o  Give two strategies to solve the multi-path problem and handle
      fine-grained path error in section 6.  One option is to introduce
      feedback mechanism, the other option is to implement exploring.

2.  Motivations

   Below is the acceptable input parameters of ECS in {11.5.1.3} of
   [RFC7285].

                  object {
                    CostType          cost-type;
                    [JSONString       constraints<0..*>;]
                    EndpointFilter    endpoints;
                  } ReqEndpointCostMap;

                  object {
                    [TypedEndpointAddr srcs<0..*>;]
                    [TypedEndpointAddr dsts<0..*>;]
                  } EndpointFilter;

   Hence, the granularity is TypedEndpointAddr, which is defined in
   {10.4.1} of [RFC7285].  In particular, [RFC7285] defines two address




Shen, et al.            Expires October 23, 2016                [Page 3]

Internet-Draft                  ECS Flow                      April 2016


   types: ipv4 and ipv6.  This, however, may limit the usage of ECS in
   multiple settings.  Below we give some use cases.

   Use case 1:

   ECS is not compatible with virtual host technology, a popular on the
   Internet, which allows different hosts to share the same IP address.
   For example, a reverse proxy p1 hosts three sites shown in Figure 1.
   These sites share the same public network address: 202.180.1.11.
   Suppose the link in the private network from p1 to server s1 is busy,
   but the link to server s2 is free.  It will cost client c1 more to
   access www.a.com than www.b.com.  Suppose c1 wants to know the cost
   to www.a.com.  Because ECS only supports IP addresses, it will query
   the DNS server to transfer the domain name to IP address.  Therefore,
   c1 can only obtain the cost to p1.

   As a result, c1 will get the same result to three different domain
   names because ECS is only capable of measuring the cost between IP
   addresses.

                                     +---------------------------------+
                                     |                                 |
                                     | Private     +-----------------+ |
                                     | Network     |       s1        | |
                                     |          +-->    www.a.com    | |
                                     |          |  |  192.168.1.10   | |
                                     |          |  |                 | |
                                     |          |  +-----------------+ |
                                     |          |                      |
   +-----------------+      +--------+--------+ |  +-----------------+ |
   |       c1        |      |       p1        | |  |       s2        | |
   |   Web Browser   +------>  Reverse Proxy  +-+-->    www.b.com    | |
   |  60.20.100.11   |      |   202.180.1.11  | |  |  192.168.1.11   | |
   |                 |      |   192.168.1.20  | |  |                 | |
   +-----------------+      +--------+--------+ |  +-----------------+ |
                                     |          |                      |
                                     |          |  +-----------------+ |
                                     |          |  |       s3        | |
                                     |          +-->    www.c.com    | |
                                     |             |  192.168.1.12   | |
                                     |             |                 | |
                                     |             +-----------------+ |
                                     |                                 |
                                     +---------------------------------+

          Figure 1: Using reverse proxy to operate virtual hosts.

   Use case 2:



Shen, et al.            Expires October 23, 2016                [Page 4]

Internet-Draft                  ECS Flow                      April 2016


   ECS is not compatible with port-based or protocol-based routing
   systems.  For example, the OpenFlow protocol can forward packets to
   different destinations by the port in TCP/IP protocols.  A simple
   topology is shown in Figure 2, the link between switch sw1 and switch
   sw2 has a low speed but a low latency, while sw3 is a high speed but
   high latency switch.  And there are two services running on host h2,
   SSH and FTP, using port 22 and port 20, respectively.  An efficient
   flow configuration supported by OpenFlow, is to use a low latency
   link to transfer SSH packets and a high speed route to transfer
   files.  So sw1 and sw2 will exchange the SSH flows with each other to
   achieve a lower latency and forward FTP flows to sw3 to achieve a
   higher bandwidth.

   In this case, the SDN network uses suitable links to transfer
   different packets, so the cost between IP addresses is protocol or
   port related.  However, ECS cannot use this information to give a
   precise result.

                +-----------------+     +-----------------+
                |       h1        |     |        h2       |
                |    SSH client   |     | SSH service: 22 |
                |    FTP client   |     | FTP service: 20 |
                |                 |     |                 |
                +-------^---------+     +---------^-------+
                        |                         |
                        |                         |
                     +--v---+                 +---v--+
                     |      |    Low Speed    |      |
                     | sw 1 <-----------------> sw 2 |
                     |      |   Low Latency   |      |
                     +--^---+                 +---^--+
                        |                         |
                        |                         |
                     +--v-------------------------v--+
                     |             sw 3              |
                     |          High Speed           |
                     |         High Latency          |
                     +-------------------------------+

       Figure 2: A simple example of protocol or port based routing.

   Use case 3:

   ECS is not compatible with other addresses such as MAC addresses or
   physical connectors.  For example, some protocols such as ARP send
   packets by MAC addresses.  ECS is unable to measure the cost between
   two NICs without IP addresses.  The ALTO, as an information source,




Shen, et al.            Expires October 23, 2016                [Page 5]

Internet-Draft                  ECS Flow                      April 2016


   cannot compute the cost between two physic ports, either.  These
   knowledge seems useless for the Internet users, but useful for ISPs.

3.  Overview Of Approach

   This section contains the non-normative overview of the ECS extension
   for flows defined in this document.  It assumes that the readers are
   familiar with the ALTO Protocol ([RFC7285]).

3.1.  Extend Endpoint Abstraction

   The typed endpoint address used by ECS is defined in {10.4} of
   [RFC7285].  That section only defines two address types: ipv4 and
   ipv6 to express IPv4 addresses and IPv6 addresses respectively.
   However, the flow-extended ECS may contain MAC addresses, domain
   names and port numbers to give a cost between hosts.

   Therefore, this document transform the typed endpoint address to
   ConnectionURI to measure the cost more precisely.  This URI must
   conform to the syntax for URI defined in [RFC3986], in particular
   with respect to character encoding.  The ConnectionURI may have one
   of the following form:

                      "protocol:name-or-address:port"
                      "protocol:name-or-address"

   And this ConnectionURI is defined in [OpenFlow1.5], and it is used to
   identify a controller connection.  To extend endpoint abstraction, we
   use ConnectionURI to specify a flow with fields:

   protocol: The protocol field is REQUIRED.  It contains many kinds of
   protocols, the protocol can be layer two protocols (like PPP, ARP)
   and layer three protocols (like IPv4, IPv6), it can also be upper-
   layer protocols (like UDP, TCP, HTTP, FTP).  And for different kinds
   of protocols, there are some provisions.  Firstly, if the protocol
   field is layer two or layer three protocol, client's query can not
   fill in the port field in ConnectionURI, because the port is
   unnecessary.  Secondly, when the protocol is upper-layer protocol,
   and if client do not indicate the port, for some special protocol, we
   will use the default port.

   name-or-address: This field is REQUIRED.  The hostname or IP address
   or domainnname or MAC address of the controller.  If the hostname is
   locally configured, it is recommended that the URI uses the IP
   address.  If the hostname is available via DNS the URI may use
   either, so long as it is consistent.





Shen, et al.            Expires October 23, 2016                [Page 6]

Internet-Draft                  ECS Flow                      April 2016


   port: This field is OPTIONAL.  It is forbidden when the protocol is
   layer three or layer two protocol (like IPv4 and IPv6).  And it is
   added for more fine-gained request when the protocol is upper-layer
   protocol.  For some classic protocols, if the port is not indicated,
   we use the default port.  For example, the default port of SSH is 22,
   and FTP is 21, HTTP is 80.

   A request to query the cost between hosts looks like this:

              {
                "cost-type": {"cost-mode" : "ordinal",
                              "cost-metric" : "routingcost"},
                "ConnectionURI" : {
                  "srcs": [ "ipv4:192.0.2.2:22" ],
                  "dsts": [
                    "http:www.a.com:80",
                    "ftp:01-23-45-67-89-AB",
                    "ipv4:198.51.100.34",
                    "telnet:198.51.100.34:23",
                    "ipv6:2000::1:2345:6789:abcd"
                   ]
                }
              }

   This design of API is fully compatible with ECS.  TypedEndpointAddr
   of EndpointFilter in ECS have the format of "protocal:address", and
   the protocol only supports IPv4 and IPv6, so it can also be used in
   this design.

3.2.  Strategy for Multi-Path

   The multi-path problem refers to the case when given a flow-extended
   ECS request, more than one path are found and the ALTO server does
   not know to return which path's cost.

   Two reasons may cause the multi-path problem.  First, the input of
   client is not fine-grained so that there are multiple paths matching
   a single input pair.  Another reason is some requirements from
   clients like load balancing can make traffic choose one of several
   optional paths randomly.

   Section 6.1 gives a strategy for multi-path problem which is by
   returning a feedback when multi-path problem is detected in server to
   ask client for more details to select the specific result.







Shen, et al.            Expires October 23, 2016                [Page 7]

Internet-Draft                  ECS Flow                      April 2016


3.3.  Compatibility with Legacy Clients

   The extension defined in this document should be compatible with
   legacy implementations, which means clients and servers are not aware
   of this extension.  A good way to achieve this goal is defining new
   media types for extended endpoint cost map.  Based on the fact that
   the format of the extended address is similar as that of the original
   typed endpoint address, it would be a simpler way to implement a
   parser which can handle both typed endpoint addresses.

   Therefore, no new media type is defined in this document.  Instead,
   this document extends the specifications of Information Resource
   Directory (IRD) in the ALTO protocol.  Because the legacy ALTO
   clients MUST ignore unknown fields (see {8.3.7} of [RFC7285]), the
   legacy implementations will not use the extended typed endpoint
   address and are not aware of the existence of this extension.

3.4.  Endpoint Cost Resources

   There is no need in this document to extend the endpoint cost service
   in IRD.  So the legacy Endpoint Cost Resources is still useful.

   For example, an extended endpoint cost resource in IRD is shown
   below:

         "endpoint-cost" : {
           "uri" : "http://alto.example.com/endpointcost/lookup",
           "media-type" : "application/alto-endpointcost+json",
           "accepts" : "application/alto-endpointcostparams+json",
           "capabilities" : {
             "cost-constraints" : true,
             "cost-type-names" : [ "num-routing", "num-hop",
                                   "ord-routing", "ord-hop" ]
           }
         }

4.  Design Principles

   In practice, there are several principles affecting the design of ECS
   extension.  This section will talk about two major principles and why
   they are important.

4.1.  Path Oblivious Principle

   The interfaces of ECS should not require or produce path related
   information.  Practically, users do not care about the real path
   where the packets pass when they are sent between source and
   destination.  Users only care about the cost between the endpoint



Shen, et al.            Expires October 23, 2016                [Page 8]

Internet-Draft                  ECS Flow                      April 2016


   pair.  This principle requires the API design not to be related on
   the path information.  Meanwhile, the ALTO server should not reveal
   the detailed path information to the clients, either.

4.2.  Full Relationship Principle

   ECS MUST provide the costs for the full relationship.  It means that
   the response map of ECS query MUST be the Cartesian Product between
   source and destination endpoint set.  ECS assumes users are always
   asking for the full relationship.

5.  Protocol Extension for Flow-Extended ECS

5.1.  Endpoint Cost Service Extensions

   This document extends the Endpoint Cost Service, as defined in
   {11.5.1} of [RFC7285], by changing the format of EndpointFilter.

   The media type ({11.5.1.1} of [RFC7285]), HTTP method ({11.5.1.2} of
   [RFC7285]) and "uses" specifications ({11.5.1.5} of [RFC7285]) are
   unchanged.

5.1.1.  Accepted Input Parameters

   The ReqEndpointCostMap object in {11.5.1.3} of [RFC7285] is extended
   as follows:

             object {
               CostType                   cost-type;
               [JSONString                constraints<0..*>;]
               EndpointFilter             endpoints;
             } ReqEndpointCostMap;

             object {
               [ConnextionURI srcs<0..*>;]
               [ConnectionURI dsts<0..*>;]
             } EndpointFilter;

   With fields:

   cost-type, constraints: : As defined in {11.5.1.3} of [RFC7285].

   endpoints: : Change the TypedEnpointAddress to ConnectionURI to get
   the fine-grained flow.







Shen, et al.            Expires October 23, 2016                [Page 9]

Internet-Draft                  ECS Flow                      April 2016


5.2.  ALTO Address Type Registry Extensions

   This document requests registration of the identifiers "mac" and
   "domainname" as shown in Table 1.

   +------------+----------+-----------+-------------------------------+
   | Identifier | Address  | Prefix    | Mapping to/from IPv4/v6       |
   |            | Encoding | Encoding  |                               |
   +------------+----------+-----------+-------------------------------+
   | mac        | See      | No        | Mapping from IPv4 by          |
   |            | Section  | compact   | [RFC0826].  Mapping to IPv4   |
   |            | 6.1.3    | encoding  | by [RFC0903].  Mapping from   |
   |            |          | is        | IPv6 by [RFC4861].  Mapping   |
   |            |          | available | to IPv6 by [RFC3122].         |
   | domainname | See      | No        | Mapping to/from IPv4 by       |
   |            | Section  | compact   | [RFC1034].  Mapping to/from   |
   |            | 6.1.3    | encoding  | IPv6 by [RFC3596].            |
   |            |          | is        |                               |
   |            |          | available |                               |
   +------------+----------+-----------+-------------------------------+

                      Table 1: New ALTO Address Types

6.  Interoperation and Exception Handling

6.1.  Feedback when Multi-Path Detected

   There may be several paths got by client's input, and our server did
   not know which to choose.  When multi-Path problem is detected, there
   are two possible reasons.  One is users' input is not fine-grained so
   that there are multiple paths matching a individual input pair.
   Another reason is some requirements like load balancing can make
   traffic choose one of several optional paths randomly.  And if it is
   caused by the second reasons, we return all the results.  And for the
   first reason, we return a special flag to represent the reason why a
   flow can not be returned the specific result.

   In flow extended ECS, we return "NR" in cost field to mean there is
   no specific path found by the ConnectionURI pair, and return "MU" in
   cost field to mean that there are multiple paths, and client should
   support more fine-grained information to get a path.  The detailed
   example can be found in [section 7.2] of this document.

   In the last version of flow extended ECS, we regard the situation of
   multi-path problem as an error, so when multi-path problem is
   detected, server return an error to client, and extend some error
   information in the error response.  The problem of the original
   design is that in that a query from client usually contains several



Shen, et al.            Expires October 23, 2016               [Page 10]

Internet-Draft                  ECS Flow                      April 2016


   flows, and other flows' result is not returned only due to a single
   flow's error.

7.  Examples

7.1.  Information Resource Directory

   Here is an example of an ALTO server's Information Resource Directory
   with an Endpoint Cost Service which supports the flow-based ECS
   extensions.

   GET /directory HTTP/1.1
   Host: alto.example.com
   Accept: application/alto-directory+json,application/alto-error+json

   HTTP/1.1 200 OK
   Content-Length: [TODO]
   Content-Type: application/alto-directory+json
   {
     "meta" : {
       "default-alto-network-map" : "my-default-network-map",
       "cost-types" : {
          "num-routing" : {
            "cost-mode" : "numerical",
            "cost-metric" : "routingcost"
          },
          "num-hopcount" : {
            "cost-mode" : "numerical",
            "cost-metric" : "hopcount"
          },
       }
     },
     "resources" : {
         "my-default-network-map" : {
           "uri" : "http://alto.example.com/networkmap",
           "media-type" : "application/alto-networkmap+json"
         },
         "numerical-routing-cost-map" : {
           "uri" : "http://alto.example.com/costmap/num-routing",
           "media-types" : [ "application/alto-costmap+json" ],
           "uses" : [ "my-default-network-map" ],
           "capabilities" : {
             "cost-type-names" : [ "num-routing" ]
           }
         },
         "numerical-hopcount-cost-map" : {
           "uri" : "http://alto.example.com/costmap/num-hopcount",
           "media-types" : [ "application/alto-costmap+json" ],



Shen, et al.            Expires October 23, 2016               [Page 11]

Internet-Draft                  ECS Flow                      April 2016


           "uses" : [ "my-default-network-map" ],
           "capabilities" : {
             "cost-type-names" : [ "num-hopcount" ]
           }
         },
         .........
         And other information resources described in RFC7285
         .........
         "endpoint-multicost-map" : {
           "uri" : "http://alto.example.com/multi/endpointcost/lookup",
           "media-types" : [ "application/alto-endpointcost+json" ],
           "accepts" : [ "application/alto-endpointcostparams+json" ],
           "uses" : [ "my-default-network-map" ],
           "capabilities" : {
             "cost-constraints" : true,
             "cost-type-names" : [ "num-routingcost",
                                   "num-hopcount" ],
           }
       }
     }
   }

7.2.  Endpoint Cost Service

   This example uses multi-field typed endpoint addresses to query the
   "routingcost" for selected endpoints.  And in the response, the "MU"
   means there are multiple paths from source to "http:www.a.com", so
   client should give more fine-grained information, but server did not
   provide other detail informations like what port client can
   replenish.  And the response "NR" means there is no result, we can
   not find a path by this pair of ConnectionURI.




















Shen, et al.            Expires October 23, 2016               [Page 12]

Internet-Draft                  ECS Flow                      April 2016


          POST /endpointcost/lookup HTTP/1.1
          Host: alto.example.com
          Content-Length: 345
          Content-Type: application/alto-endpointcostparams+json
          Accept: application/alto-endpointcost+json,
                  application/alto-error+json

          {
            "cost-type": {"cost-mode" : "ordinal",
                          "cost-metric" : "routingcost"},
            "multi-field-endpoints" : {
              "srcs": [ "ipv4:192.0.2.2" ],
              "dsts": [
                "http:www.a.com",
                "ftp:01-23-45-67-89-AB",
                "ipv4:198.51.100.34",
                "telnet:198.51.100.34:23",
                "ipv6:fe80::ce3d:82ff:fe34:27e0/64"
              ]
            }
          }

          HTTP/1.1 200 OK
          Content-Length: 402
          Content-Type: application/alto-endpointcost+json

          {
            "meta" : {
              "cost-type": {"cost-mode" : "ordinal",
                            "cost-metric" : "routingcost"
              }
            },
            "endpoint-cost-map" : {
              "ipv4:192.0.2.2": {
                "http:www.a.com"                          : "MU",
                "ftp:01-23-45-67-89-AB"                   : 1,
                "ipv4:198.51.100.34"                      : 2,
                "telnet:198.51.100.34:23"                 : "NR",
                "ipv6:fe80::ce3d:82ff:fe34:27e0/64"       : 3
              }
            }
          }

8.  Discussion







Shen, et al.            Expires October 23, 2016               [Page 13]

Internet-Draft                  ECS Flow                      April 2016


8.1.  Endpoint Cost Service vs. Flow Cost Service

   There are two strategies on how to extend endpoint cost service for
   flows.  The method used in this document is extending the legacy ECS,
   and the other way is defining a new service which we can call it Flow
   Cost Service (FCS).

   FCS is an isolated service which is unrelated to the ECS, and this
   service is incompatible with the legacy ECS.  It calculates the cost
   for each specific flow.  For better compatibility, this document
   chooses the first strategy, which is to extend the legacy ECS.

8.2.  The Same Purpose Principle

   This document intents to indicate that another design principle is to
   ensure the same purpose.  ECS SHOULD assume users submit only one
   objective in a single query.  Traffic of every endpoint pairs in this
   query MUST have the same purpose.  And if users want to query
   multiple objective traffic types, they MAY send multiple individual
   queries.

   But some people may think this principle is too strong and
   unnecessary.  People can debate that ECS should be more flexible and
   be able to allow multiple purposes.  A potential advantage of
   accepting multiple purposes may be less overhead.  But it may also
   increase the complexity of handling queries.

8.3.  Integration with Incremental Update

   The clients may want the result timely and efficiently, so we should
   make client able to obtain updates to ECS results, other than by
   periodically re-fetching them.  To support this, we adopt the
   mechanism of sse.  ALTO Server defines an Update Stream Services for
   ECS, Client establishes an HTTP stream to an Update Service, Updates
   are Server-Sent Events (SSEs), Server decides full replacement vs
   incremental update,Client can decline incremental updates.for more
   information, reference [draft-ietf-alto-incr-update-sse-00].

   For ECS Flow, however, there are some cases that SSE does not
   supports well.  For example, after updating, the situation of multi-
   path may occur.  Then the client need query again with more fine-
   grained information.  Hence the detail design of incremental update
   is not confirmed in this document.








Shen, et al.            Expires October 23, 2016               [Page 14]

Internet-Draft                  ECS Flow                      April 2016


8.4.  Automatic Exploring Fine-Grained Path

   When the query granularity are not fine-grained enough to get
   specific result, we want the ALTO server to explore fine-grained path
   automatically.  The server can add more details by itself and explore
   specific path.  And when the client give more details, the server can
   return the cost immediately.  For example, clients may only request
   by IPAddress, but the server can calculate some costs by IPaddress
   and some common ports.

9.  IANA Considerations

   This document does not define any new media type or introduce any new
   IANA consideration.

10.  Privacy And Security Considerations

   This document does not introduce any privacy or security issue not
   already present in the ALTO protocol.

11.  Normative References

   [RFC0826]  Plummer, D., "Ethernet Address Resolution Protocol: Or
              Converting Network Protocol Addresses to 48.bit Ethernet
              Address for Transmission on Ethernet Hardware", STD 37,
              RFC 826, DOI 10.17487/RFC0826, November 1982,
              <http://www.rfc-editor.org/info/rfc826>.

   [RFC0903]  Finlayson, R., Mann, T., Mogul, J., and M. Theimer, "A
              Reverse Address Resolution Protocol", STD 38, RFC 903,
              DOI 10.17487/RFC0903, June 1984,
              <http://www.rfc-editor.org/info/rfc903>.

   [RFC1034]  Mockapetris, P., "Domain names - concepts and facilities",
              STD 13, RFC 1034, DOI 10.17487/RFC1034, November 1987,
              <http://www.rfc-editor.org/info/rfc1034>.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <http://www.rfc-editor.org/info/rfc2119>.

   [RFC3122]  Conta, A., "Extensions to IPv6 Neighbor Discovery for
              Inverse Discovery Specification", RFC 3122,
              DOI 10.17487/RFC3122, June 2001,
              <http://www.rfc-editor.org/info/rfc3122>.





Shen, et al.            Expires October 23, 2016               [Page 15]

Internet-Draft                  ECS Flow                      April 2016


   [RFC3596]  Thomson, S., Huitema, C., Ksinant, V., and M. Souissi,
              "DNS Extensions to Support IP Version 6", RFC 3596,
              DOI 10.17487/RFC3596, October 2003,
              <http://www.rfc-editor.org/info/rfc3596>.

   [RFC3986]  Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
              Resource Identifier (URI): Generic Syntax", STD 66,
              RFC 3986, DOI 10.17487/RFC3986, January 2005,
              <http://www.rfc-editor.org/info/rfc3986>.

   [RFC4861]  Narten, T., Nordmark, E., Simpson, W., and H. Soliman,
              "Neighbor Discovery for IP version 6 (IPv6)", RFC 4861,
              DOI 10.17487/RFC4861, September 2007,
              <http://www.rfc-editor.org/info/rfc4861>.

   [RFC7285]  Alimi, R., Ed., Penno, R., Ed., Yang, Y., Ed., Kiesel, S.,
              Previdi, S., Roome, W., Shalunov, S., and R. Woundy,
              "Application-Layer Traffic Optimization (ALTO) Protocol",
              RFC 7285, DOI 10.17487/RFC7285, September 2014,
              <http://www.rfc-editor.org/info/rfc7285>.

Authors' Addresses

   Xvdong Shelden Shen
   Tongji University
   4800 Cao'an Road, Jiading District
   Shanghai
   China

   Email: shenxvdong1@gmail.com


   Jingxuan Jensen Zhang
   Tongji University
   4800 Cao'an Road, Jiading District
   Shanghai
   China

   Email: jingxuan.n.zhang@gmail.com


   Junzhuo Austin Wang
   Tongji University
   4800 Cao'an Road, Jiading District
   Shanghai
   China

   Email: wangjunzhuo200@gmail.com



Shen, et al.            Expires October 23, 2016               [Page 16]

Internet-Draft                  ECS Flow                      April 2016


   Qiao Xiang
   Tongji/Yale University
   4800 Cao'an Road, Jiading District
   Shanghai
   China

   Email: xiangq27@gmail.com












































Shen, et al.            Expires October 23, 2016               [Page 17]