ALTO Working Group Q. Wu
Internet-Draft Y. Lee
Intended status: Standards Track D. Dhody
Expires: April 23, 2014 Huawei
S. Randriamasy
Alcatel-Lucent
October 20, 2013

ALTO Traffic Engineering Cost Metrics
draft-wu-alto-te-metrics-00

Abstract

Cost Metric is a basic concept in Application-Layer Traffic Optimization (ALTO). It is used in both the Cost Map Service and the Endpoint Cost Service. Future extensions to ALTO may also use Cost Metric.

Different applications may benefit from different Cost Metrics. For example, a Resource Consumer may prefer Resource Providers that have low latency to the Resource Consumer. However the base ALTO protocol [ALTO] has defined only a single cost metric, i.e., the generic "routingcost" metric (Sec. 14.2 of ALTO base specification [ALTO]).

In this document, we define XXX Cost Metrics, derived from OSPF-TE and ISIS-TE, to measure network delay, jitter, packet loss, hop count, and bandwidth. The metrics defined in this document provide a relatively comprehensive set of Cost Metrics for ALTO focusing on traffic engineering. Additional Cost Metrics such as financial cost metrics may be defined in other documents.

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 April 23, 2014.

Copyright Notice

Copyright (c) 2013 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 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

Cost Metric is a basic concept in Application-Layer Traffic Optimization (ALTO). It is used in both the Cost Map Service and the Endpoint Cost Service. In particular, applications may benefit from knowing network performance measured in several Cost Metrics. For example, a more delay sensitive application may focus on latency, and a more bandwidth-sensitive application may focus on available bandwidth.

In this document, we define X Cost Metrics, extending the base ALTO protocol [ALTO], which has defined only a single Cost Metric, i.e., the generic "routingcost" metric (Sec. 14.2 of ALTO base specification [ALTO]).

The Cost Metrics that we define in this document focus on traffic engineering. Additional metrics may be defined in other documents. In particular, the Cost Metrics that we define in this document can be gathered from routing systems; [OSPF-TE], [ISIS-TE], [BGP-LS] and [BGP-PM] define mechanisms that allow an ALTO Server to retrieve and derive the necessary information to provide the metrics that we define in this document.

Note that the metrics that the ALTO Server retrieves may be defined for only links, and hence, the server will need to compose the link metrics to obtain path metrics used in services such as the Cost Map Service. In this definition, we define the metrics to be independent of link or path, considering that future ALTO extensions may define link-based services, and hence the defined metrics should still be usable.

One challenge in defining the metrics is that performance metrics often depend on configuration parameters. For example, the value of packet loss rate depends on the measurement interval. We handle this issue [YRY: IMPORTANT TO SOLVE]

The definitions of a set Cost Metrics can allow us to extend the base protocol (e.g., allowing output and constraints use different Cost Metrics), but such extensions are not in the scope of this document.

2. Conventions used in this document

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

Syntax specifications shown here use the augmented Backus-Naur Form (ABNF) as described in [RFC5234], and are specified as in the base JSON specification [RFC4627].

3. Metric: delay

Cost Metric name:  delay

Metric Description:  To specify spatial and temporal aggregated
          delay over the specified source and destination. The 
          spatial aggregation unit is specified in the query context
          (e.g., PID to PID, or endhost to endhost); and the temporal
          unit is specified as the measurement interval.

Metric Unit:  The unit is microseconds.

Metric Value Type:  
           A single 'JSONNumber' type value containing a non-negative 
           integer component that may be followed by a fraction part 
           and/or an exponent part.

Cost Mode:  A Cost Mode is encoded as a US-ASCII string.
The string MUST either have the value 'numerical' or 'ordinal'.

Measurement details: YRY: SPECIFY MORE DETAILS.

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

{
  "cost-type": {"cost-mode" : "numerical",
                "cost-metric" : "delay"},
  "endpoints" : {
    "srcs": [ "ipv4:192.0.2.2" ],
    "dsts": [
      "ipv4:192.0.2.89",
      "ipv4:198.51.100.34",
      "ipv4:203.0.113.45"
    ]
  }
}

HTTP/1.1 200 OK
Content-Length: TBA
Content-Type: application/alto-endpointcost+json
{
  "meta" :{
    "cost-type": {"cost-mode" : "numerical",
                  "cost-metric" : "delay"
     }
   },
    "endpoint-cost-map" : {
      "ipv4:192.0.2.2": {
        "ipv4:192.0.2.89"    : 10,
        "ipv4:198.51.100.34" : 20,
        "ipv4:203.0.113.45"  : 30,
    }
  }
}

4. Metric: delayjitter

Cost Metric name:  delayjitter

Metric Description:   To specify the average delay variation over 
          a configurable interval for each source/destination pair
          between two endpoints (network locations) in the network.
          It could be either end to end jitter or the jitter 
          associated with a link (linkjitter). The unit is 
          microseconds.

Cost Metric Value type: 
          A single 'JSONumber' type value containing an integer 
          component that may be prefixed with an optional minus
          sign, which may be followed by a fraction part and/or 
          an exponent part.

Purpose: This is intended to be a constraint attribute value
It could be used as a cost metric constraint attribute used 
together with cost metric attribute 'routingcost' or on its
own or as a returned cost metric in the response. 

Cost mode:  A Cost Mode is encoded as a US-ASCII string.  
The string MUST either have the value 'numerical' or 'ordinal'.

Measurement timing: Gather and update at the configurable interval
if it is link attribute. See [OSPF-TE] for configurable
interval. The configurable interval for end to end jitter could
be same as link.

Measurement points with Potential Measurement Domain:
The measurement point could be at any endpoint between
source and destination in the network.

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

{
  "cost-type": {"cost-mode" : "numerical",
   "cost-metric" : "delayjitter"},
  "endpoints" : {
    "srcs": [ "ipv4:192.0.2.2" ],
    "dsts": [
      "ipv4:192.0.2.89",
      "ipv4:198.51.100.34",
      "ipv4:203.0.113.45"
    ]
  }
}
HTTP/1.1 200 OK
 Content-Length: TBA
 Content-Type: application/alto-endpointcost+json
{
  "meta": {
           "cost type": {
           "cost-mode": "numerical",
           "cost-metric":"delayjitter"
    }
   },
  "endpoint-cost-map": {
           "ipv4:192.0.2.2": {
           "ipv4:192.0.2.89"    : 0 
           "ipv4:198.51.100.34" : 1
           "ipv4:203.0.113.45"  : 5
         }
      }
   }

5. Metric: pktloss

Cost Metric name:  pktloss

Metric Description:  To specify a percentage of the total traffic
          sent over a configurable interval for each 
          source/destination pair between two endpoints(network 
          locations) in the network. It could be either end to 
          end packet loss or the packet loss associated with a link
          (linkloss).

Cost Metric Value type: 
          A single number value containing an integer component that
          may be prefixed with an optional minus sign, which may
          be followed by a fraction part and/or an exponent part.

Purpose: This is intended to be a constraint attribute value
It could be used as a cost metric constraint attribute used 
together with cost metric attribute 'routingcost' or on its
own or as a returned cost metric in the response. 

Cost mode:  A Cost Mode is encoded as a US-ASCII string. 
The string MUST either have the value 'numerical' or 'ordinal'.

Measurement timing: Gather and update at the configurable interval
if it is link attribute. See [OSPF-TE] for configurable
interval. The configurable interval for end to end packet loss
could be same as link.

Measurement points with Potential Measurement Domain:
The measurement point could be at any endpoint between
source and destination in the network.

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

  {
    "cost-type": {"cost-mode" : "numerical",
     "cost-metric" : "pktloss"},
    "endpoints" : {
      "srcs": [ "ipv4:192.0.2.2" ],
      "dsts": [
        "ipv4:192.0.2.89",
        "ipv4:198.51.100.34",
        "ipv4:203.0.113.45"
      ]
    }
  }
HTTP/1.1 200 OK
Content-Length: TBA
Content-Type: application/alto-endpointcost+json
{
    "meta": {
               "cost type": {
             "cost-mode": "numerical",
             "cost-metric":"pktloss"}
       }
    },
   "endpoint-cost-map": {
           "ipv4:192.0.2.2": {
           "ipv4:192.0.2.89"   : 0,
           "ipv4:198.51.100.34": 1,
           "ipv4:203.0.113.45" : 0,
                             }
             }
 }

6. Cost Metric: hopcount

Cost Metric name:  hopcount

Metric Description:  To specify the number of hops in the path 
          between the source endpoint and the destination 
         endpoint. 

Editor Note: Need to specify which layer (IP perhaps), details TBD for
multiple-layer aspect.

Cost Metric Value type:
        A single 'JSONNumber' type value containing an
        integer component that may be prefixed with an 
        optional minus sign.

Purpose: This is intended to be a constraint attribute value
It could be used as a cost metric constraint attribute used 
together with cost metric attribute 'routingcost' or on its
own or as a returned cost metric in the response. 

Cost mode:  A Cost Mode is encoded as a US-ASCII string.
string MUST either have the value 'numerical' or 'ordinal'.

7. Metrics: bandwidth

Cost Metric name:  bandwidth

Metric Description:  To specify Bandwidth over a configurable
          interval for each source/destination pair between
          two endpoints (network locations)in the network. 
          It could be either aggregated bandwidth for end to end
          path or the bandwidth associated with a link. The units
          are bytes per second. 

Cost Metric Value type:  
          A single 'JSONNumber' type value containing an integer 
          component that may be prefixed with an optional minus 
          sign, which may be followed by a fraction part and/or
          an exponent part.

Purpose: This is intended to be a constraint attribute value
It could be used as a cost metric constraint attribute used 
together with cost metric attribute 'routingcost' or on its
own or as a returned cost metric in the response. 

Cost mode:  A Cost Mode is encoded as a US-ASCII string.  
The string MUST either have the value 'numerical' or 'ordinal'.

This is just a definition of the costtype 'bandwidth'. 
The use of this cost is always in conjunction with what it 
represents, which could be Max Bandwidth (maxbw), Residual
Bandwidth (residuebw) etc. 

Examples: (based on Residual Bandwidth (residuebw))

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

  {
    "cost-type": {"cost-mode" : "numerical",
     "cost-metric" : "residubw"},
    "endpoints" : {
      "srcs": [ "ipv4:192.0.2.2" ],
      "dsts": [
        "ipv4:192.0.2.89",
        "ipv4:198.51.100.34",
        "ipv4:203.0.113.45"
      ]
    }
  }
HTTP/1.1 200 OK
Content-Length: TBA
Content-Type: application/alto-endpointcost+json
{
    "meta": {
               "cost type": {
             "cost-mode": "numerical",
             "cost-metric":"residubw"
        }
     },
    "endpoint-cost-map": {
            "ipv4:192.0.2.2": {
            "ipv4:192.0.2.89"   : 0,
            "ipv4:198.51.100.34": 2000,
            "ipv4:203.0.113.45" : 5000,
                              }
             }
}

8. Metric: maxbw

Object {
BWType     max;
[PIDName  srcPID;]
[PIDName  dstPID;]
[JSONBool state;] //TRUE = not steady for src/dst pair; FALSE = steady;
Bandwidth bw;
}maxbw;

A maxbw is gathered using [RFC3630], [RFC3784] or [BGP-LS]. It could be either maximum bandwidth for end to end path or the bandwidth associated with a link. It is extended from Bandwidth Cost metric and defined as:

9. Maximum Reserved Bandwdith: maxreservbw

Object {
BWType     maxreserved;
[PIDName  srcPID;]
[PIDName  dstPID;]
[JSONBool state;] //TRUE = not steady for src/dst pair; FALSE = steady;
Bandwidth bw;
}maxreservbw;

A maxreservbw is gathered using [RFC3630], [RFC3784] or [BGP-LS]. It could be either maximum reserved bandwidth for end to end path or the bandwidth associated with a link. It is extended from Bandwidth Cost metric and defined as:

10. Metric: unreservbw

Object {
BWType unreserved;
[PIDName  srcPID;]
[PIDName  dstPID;]
[JSONBool state;] //TRUE = not steady for src/dst pair; FALSE = steady;
Bandwidth bw<1,8>
}unreservbw;

//This bandwidth is per priority [TBD]. 

A unreservbw is gathered using [RFC3630], [RFC3784] or [BGP-LS]. It could be either unreserved bandwidth for end to end path or the bandwidth associated with a link. It is extended from Bandwidth Cost metric and defined as:

11. Metric: residuebw

Object {
BWType Residue;
[PIDName  srcPID;]
[PIDName  dstPID;]
[JSONBool state;] //TRUE = not steady for src/dst pair; FALSE = steady;
Bandwidth bw;
}rediduebw;

A residuebw is gathered using [OSPF-TE], [ISIS-TE] or [BGP-PM]. It could be either residual bandwidth for end to end path or the bandwidth associated with a link. It is extended from Bandwidth Cost metric and defined as:

12. Metric: availbw

Object {
BWType Available;
[PIDName  srcPID;]
[PIDName  dstPID;]
[JSONBool state;] //TRUE = not steady for src/dst pair; FALSE = steady;
Bandwidth bw;
}availbw;

A availbw is gathered using [OSPF-TE], [ISIS-TE] or [BGP-PM]. It could be either available bandwidth for end to end path or the bandwidth associated with a link. It is extended from Bandwidth Cost metric and defined as:

13. Metric: utilbw

Object {
BWType Utilized;
[PIDName  srcPID;]
[PIDName  dstPID;]
[JSONBool state;] //TRUE = not steady for src/dst pair; FALSE = steady;
Bandwidth bw;
}utilbw;

A utilbw is gathered using [OSPF-TE], [ISIS-TE] or [BGP-PM]. It could be either utilized bandwidth for end to end path or the bandwidth associated with a link. It is extended from Bandwidth Cost metric and defined as:

14. Security Considerations

The properties defined in this document present no security considerations beyond those in Section 14 of the base ALTO specification [ALTO].

15. IANA Considerations

IANA has added the following entries to the ALTO cost map Properties registry, defined in Section 3 of [RFCXXX].

   +-----------+--------------+------------------------+
   | Namespace | Property     | Reference              |
   +-----------+--------------+------------------------+
   |           | delay        | [RFCxxxx], Section 3.1 |
   |           | jitter       | [RFCxxxx], Section 3.2 |
   |           | pktloss      | [RFCxxxx], Section 3.3 |
   |           |  bandwidth   | [RFCxxxx], Section 3.4 |
   |           |  hopcount    | [RFCxxxx], Section 3.5 |
   |           |   maxbw      |[RFCxxxx],  Section 3.6 |
   |           |  maxresbw    |[RFCxxxx], Section 3.7  |
   |           |  unresdbw    |[RFCxxxx], Section 3.8  |
   |           |  residbw     |[RFCxxxx], Section 3.9  |
   |           |  availbw     |[RFCxxxx], Section 3.10 |
   |           |   utilbw     |[RFCxxxx], Section 3.11 |
   +-----------+--------------+------------------------+

16. References

16.1. Normative References

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", March 1997.
[RFC5234] Crocker, D., "Augmented BNF for Syntax Specifications: ABNF", RFC 5234, January 2008.
[RFC4627] Crockford, D., "The application/json Media Type for JavaScript Object Notation (JSON)", RFC 4627, July 2006.
[ALTO] Alimi, R., "ALTO Protocol", ID draft-ietf-alto-protocol-16, May 2013.
[OSPF-TE] Giacalone, S., "OSPF Traffic Engineering (TE) Metric Extensions", ID draft-ietf-ospf-te-metric-extensions-04, June 2013.
[ISIS-TE] Giacalone, S., "ISIS Traffic Engineering (TE) Metric Extensions", ID draft-ietf-isis-te-metric-extensions-01, October 2013.
[BGP-LS] Gredler, H., "North-Bound Distribution of Link-State and TE Information using BGP", ID draft-ietf-idr-ls-distribution-03, May 2013.
[BGP-PM] Wu, Q., "BGP attribute for North-Bound Distribution of Traffic Engineering (TE) performance Metrics", ID draft-wu-idr-te-pm-bgp-02, October 2013.

16.2. Informative References

[RFC6390] Clark, A. and B. Claise, "Framework for Performance Metric Development", RFC 6390, July 2011.

Appendix A. Filtering constraint Extensions

"
object {
     CostType   cost-type;
     [JSONString constraints<0..*>;]
     [PIDFilter  pids;]
   } ReqFilteredCostMap;

object {
     PIDName srcs<0..*>;
     PIDName dsts<0..*>;
   } PIDFilter;

with members:

cost-type  The CostType (Section 9.7) for the returned costs.  The
cost-metric and cost-mode fields MUST match one of the supported
Cost Types indicated in this resource's capabilities
(Section 10.2.2.4).  The ALTO Client SHOULD omit the description
field, and if present, the ALTO Server MUST ignore the description
field.

constraints  Defines a list of additional constraints on which
elements of the Cost Map are returned.  This parameter MUST NOT be
specified if this resource's capabilities ( Section 10.2.2.4)
indicate that constraint support is not available.  A constraint
contains two entities separated by whitespace: (1) an operator,
 'gt' for greater than, 'lt' for less than, 'ge' for greater than
or equal to, 'le' for less than or equal to, or 'eq' for equal to;
(2) a target cost value.  The cost value is a number that MUST be
defined in the same units as the Cost Metric indicated by the
cost-metric parameter.  ALTO Servers SHOULD use at least IEEE 754
double-precision floating point [IEEE.754.2008] to store the cost
value, and SHOULD perform internal computations using double-
precision floating-point arithmetic.  If multiple 'constraint'
parameters are specified, they are interpreted as being related to
each other with a logical AND.
”

Section 10.2.2.3 of "ALTO: Application Layer Traffic Optimization Protocol" [I.D-ietf-alto-protocol] states:

“
[gt | lt | ge | le | eq ] <value>
”

In the JSON Object of type ReqFilteredCostMap, the constraint attribute is expressed as:

   “
<cost-type2>  [gt | lt | ge | le | eq ] <value>
   ”

In this specification, the constraint attribute is changed to

“
constraints  Defines a list of additional constraints on which
elements of the Cost Map are returned.  This parameter MUST NOT be
specified if this resource's capabilities ( Section 10.2.2.4)
indicate that constraint support is not available.  A constraint
contains three entities separated by whitespace: (1)an cost type
is by default cost-type in the JSON Object of type ReqFilteredCostMap.
In addition, it could be another cost-type used for the returned cost 
(2) an operator, 'gt' for greater than, 'lt' for less than, 'ge' for
greater than or equal to, 'le' for less than or equal to, or 'eq' for 
equal to; (3) a target cost value.  The cost value is a number that 
MUST be defined in the same units as the Cost Metric indicated by the
cost-metric parameter.  ALTO Servers SHOULD use at least IEEE 754
double-precision floating point [IEEE.754.2008] to store the cost
value, and SHOULD perform internal computations using double-
precision floating-point arithmetic.  If multiple 'constraint'
parameters are specified, they are interpreted as being related to
each other with a logical AND.
”

Accordingly, the constraints definition is changed to:

Editor-Notes: Filtering constraint extension should move to another document defining multi-metrics filtering in the future.

Appendix B. Contributing Authors Addresses

   Y. Richard Yang
   Yale University
   51 Prospect St
   New Haven  CT
   USA

   Email: yry@cs.yale.edu

Authors' Addresses

Qin Wu Huawei 101 Software Avenue, Yuhua District Nanjing, Jiangsu 210012 China EMail: sunseawq@huawei.com
Young Lee Huawei 1700 Alma Drive, Suite 500 Plano, TX 75075 USA EMail: leeyoung@huawei.com
Dhruv Dhody Huawei Leela Palace Bangalore, Karnataka 560008 INDIA EMail: dhruv.ietf@gmail.com
Sabine Randriamasy Alcatel-Lucent