Jump to content

ALTO (protocol)

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by Martin.duke (talk | contribs) at 17:53, 2 July 2021 (Added info model, map service example). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Application Layer Transport Optimization (ALTO) is a protocol that allows internet clients to obtain information that compares the network properties of paths to other endpoints. Typically, this would be used to identify the lowest-cost location to access a copy of some sort of content.

The protocol requires "ALTO servers" to be deployed in the network with knowledge of network properties, often simply the routing cost to various endpoints. An "ALTO client," typically tied to a user agent attempting to obtain a resource, queries the ALTO server over HTTP to obtain the optimal location from which to retrieve the resource.

The Internet Engineering Task Force (IETF) documented the ALTO design in RFC7285 in 2014. Originally designed to support peer-to-peer file sharing, the concept is broadly applicable to many network problems. However, as of 2021 it has not achieved widespread deployment in the internet. However, there have been experiments in Internet Service Provider (ISP) networks and a deployment to support large data transfers for the Large Hadron Collider at CERN. [1]

Protocol Overview

Information Model

ALTO servers typically operate inside an ISP and collect information about the topology of the ISP network. The means of collecting this information are out of scope for the ALTO design, but typically this would involve participating in the routing protocol's information exchange, accepting policy inputs from network management, and data from various network monitoring systems.

The ALTO server uses this information to provide services to the client.

The Map Service provides a file that lists all the endpoints or PIDs that the server tracks. A "network map" serves as a "table of contents" that the client can use to construct more specific queries. These endpoints are identified by IPv4 or IPv6 address and are grouped with other endpoints with similar properties into Provider-Defined Identifiers (PIDs) to reduce the size of future queries and responses. A "cost map" lists the routing cost for each pair of PIDs.

The Map-Filtering Service provides a subset of the network map or cost map based on client-provided parameters.

The Endpoint Property Service allows the client to query properties, such as the connectivity type or encapsulating PID, of a specific endpoint.

The Endpoint Cost Service gives clients the routing cost to specific endpoints, which might be expressed as the absolute cost metric or a ranking of the relative cost of each.

Protocol syntax

All ALTO client messages are REST HTTP requests that elicit HTTP responses from the ALTO server. The payloads of these requests of responses consist of JSON text that contain hierarchical key-value pairs.

Clients obtain the Map Service via the HTTP GET message. The following example from RFC7285 depicts a request for a network map and a response that groups five endpoints into 3 PIDs:

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

HTTP/1.1 200 OK
Content-Length: 449
Content-Type: application/alto-networkmap+json

{
  "meta" : {
    "vtag": {
      "resource-id": "my-default-network-map",
      "tag": "da65eca2eb7a10ce8b059740b0b2e3f8eb1d4785"
    }
  },
  "network-map" : {
    "PID1" : {
      "ipv4" : [
        "192.0.2.0/24",
        "198.51.100.0/25"
      ]
    },
    "PID2" : {
      "ipv4" : [
        "198.51.100.128/25"
      ]
    },
    "PID3" : {
      "ipv4" : [
        "0.0.0.0/0"
      ],
      "ipv6" : [
        "::/0"
      ]
    }
  }
}

Extensions

  1. ^ Vijay K. Gurbani and Jan Seedorf, [1], IEEE Communications Standards Magazine, June 2020. Retrieved 2 July 2021.