[writing with no Area Director hat on, i.e., as a random community member]
Hi Richard, all,

On 07/02/2012 08:38 AM, Richard Alimi wrote:
[...]

REQ. ARv14-4:   Full compliant : 7.5.3.3.1., 7.5.3.3.2.

    REQ.  ARv14-5: An ALTO client protocol MUST be extensible to enable
    support of other host group descriptor types in future.  An ALTO
    client protocol specification MUST define an appropriate procedure
    for adding new host group descriptor types, e.g., by establishing an
    IANA registry.

REQ. ARv14-5:   Partially compliant : 7.5.3.1 says: "Extension documents
     may define additional Address Types." but it does not define what
     kind of document is required (just an Internet-Draft, or
     Informational RFC, ...)

It needs something more than just an I-D since that is a pretty low bar.

You can specify 'protocol specification' or 'expert review' as the bar for an extension.
See also RFC 5226 for a discussion of this:
http://tools.ietf.org/html/rfc5226


Do people think a registry is needed for this?  If not, perhaps we can
just make this more explicit that it needs to be a standards-track
RFC.

There should be a registry where you can add additional address types. Otherwise it is really hard to get new address types in a clean way into the protocol. A registry allows also to keep track about all existing address types (out of the ALTO protocol and what comes later on).


    REQ.  ARv14-6: For host group descriptor types other than "IPv4
    address prefix" and "IPv6 address prefix", the host group descriptor
    type identification MUST be supplemented by a reference to a
    facility, which can be used to translate host group descriptors of
    that type to IPv4/IPv6 address prefixes, e.g., by means of a mapping
    table or an algorithm.

REQ.  ARv14-6:   Partially compliant, with comment: In addition
     to IPv4/6 addresses/prefixes the document only defines one
     host group descriptor type, namely PIDs. The mapping mechanism
     from IP prefixes to PIDs ("Network Map") is described in
     4. and 7.7.1.1.

     The document allows the definition of additional host group
     descriptor types by means of extension documents (see ARv14-5),
     but it does not mention the mapping mechanism for them at all.

     I propose:
     1.) add a clarification in section 7.5.3.1 that the extension
     documents not only have to define new Address Types but also
     an appropriate mapping mechansim.

At least in the initial discussions of ALTO, there was mention about
using these for addresses other than IP addresses, such as e.164
numbers.  That said, I haven't seen any concrete use cases for
anything other than IP addresses or things that can map to IP
addresses.

I don't intend to start a debate on the requirements document at this
stage, but I'm a bit hesitant to say that extensions MUST do this.  I
completely agree that those proposing extensions should be thinking
about this, but tend to think that MUST is too strong.  How about
extending 7.5.3.1 to state "extension documents defining a new Address
Type SHOULD also document a mechanism to map addresses of the new type
to IPv4 and/or IPv6 addresses prefixes."

A SHOULD is fine, as it implies that people must say why they are not specifying a mapping mechanism.



     2.) maybe we should spend a moment and think about whether
     the base protocol needs at least some basic infrastrucure (e.g.,
     pre-defined path names, or a standard algorithm to be execuded if a
     TypedEndpointAddr of unknown type is encountered, etc.) that
     makes defining such a mapping mechanism easier.

Do you have any thoughts on what this might look like?

An appropriate error message with a path name delivered through this would good. However, this is just a proposal.


     3.) should section 9.4. stay in the document? It discusses
     alternatives for mapping IP to ASN - if we can't decide that
     we want to specify exactly one of these alternatvies and add
     it to the base protocol, it is probably better to move the whole
     section to our deployment considerations document.

Moving this to the deployment considerations document sounds reasonable to me.

+1


    REQ.  ARv14-7: Protocol functions for mapping other host group
    descriptor types to IPv4/IPv6 address prefixes SHOULD be designed and
    specified as part of an ALTO client protocol, and the corresponding
    address mapping information SHOULD be made available by the same
    entity that wants to use these host group descriptors within an ALTO
    client protocol.  However, an ALTO server or an ALTO client MAY also
    send a reference to an external mapping facility, e.g., a translation
    table to be obtained via an alternative mechanism.


[...]


REQ.  ARv14-23:  Partially compliant: Network Map Version Tag defined
     in 5.3.  TTL attribute defined in the underlying HTTP
     ("expires"/"s-maxage" headers).

     There used to be an own section "8. Redistributable Responses"
     in draft-ietf-alto-protocol-10.txt, which has been removed in -11

     There is a reference to draft-gu-alto-redistribution-03, which
     has expired January 13, 2011, and which does not contain a
     specification of such protocol elements.

I tend to think it's best to leave this one as partially compliant for
now, and leave the additional expiration field for when there is an
extension to support redistribution (the section that was removed in
-11).  Any disagreement with that?

Not from my side.



    REQ.  ARv14-24: An ALTO client protocol SHOULD allow the ALTO server
    to add information about appropriate modes of re-use to its ALTO
    responses.  Re-use may include redistributing an ALTO response to
    other parties, as well as using the same ALTO information in a
    resource directory to improve the responses to different resource
    consumers, within the specified lifetime of the ALTO response.  The
    ALTO server SHOULD be able to express that

    o  no re-use should occur

    o  re-use is appropriate for a specific "target audience", i.e., a
       set of resource consumers explicitly defined by a list of host
       group descriptors.  The ALTO server MAY specify a "target
       audience" in the ALTO response, which is only a subset of the
       known actual "target audience", e.g., if required by operator
       policies

    o  re-use is appropriate for any resource consumer that would send
       (or cause a third party sending on behalf of it) the same ALTO
       query (i.e., with the same query parameters, except for the
       resource consumer ID, if applicable) to this ALTO server

    o  re-use is appropriate for any resource consumer that would send
       (or cause a third party sending on behalf of it) the same ALTO
       query (i.e., with the same query parameters, except for the
       resource consumer ID, if applicable) to any other ALTO server,
       which was discovered (using an ALTO discovery mechanism) together
       with this ALTO server

    o  re-use is appropriate for any resource consumer that would send
       (or cause a third party sending on behalf of it) the same ALTO
       query (i.e., with the same query parameters, except for the
       resource consumer ID, if applicable) to any ALTO server in the
       whole network

REQ.  ARv14-24:  Partially compliant: first and last option supported
     by HTTP mechanisms. Second and third option relied on the now-removed
     section 8 of draft-ietf-alto-protocol-10

Yeah - I'm personally okay with this current state, since we
consciously removed the section on Redistribution and left that for an
extension.

If we allow to be partially compliant, we should at least note that the missing points are part of a future redistribution mechanism and therefore not specified in the current ALTO protocol.



    REQ.  ARv14-25: An ALTO client protocol MUST support the transport of
    ALTO transactions even if the ALTO client is located in the private
    address realm behind a network address translator (NAT).  There are
    different types of NAT, see [RFC4787] and [RFC5382].

REQ.  ARv14-25:  Full compliant: The ALTO protocol is based on HTTP
     (Sec.  6).  Allowing HTTP traffic is one of the most basic requirements
     for all types of NAT. For detection of "public" IP address see 9.3.

3.1.5.  Protocol Extensibility

    REQ.  ARv14-26: An ALTO client protocol MUST include support for
    adding protocol extensions in a non-disruptive, backward-compatible
    way.

REQ.  ARv14-26:  Full compliant: 10.1

The use of JSON and Section 7.2.7 also helps with extensions.

    REQ.  ARv14-27: An ALTO client protocol MUST include protocol
    versioning support, in order to clearly distinguish between
    incompatible versions of the protocol.

REQ.  ARv14-27:  NOT compliant. There is no version field.
     7.6. states: "Future extensions or
     versions of the ALTO Protocol SHOULD be accomplished by extending
     existing media types or adding new media types, but retaining the
     same format for the Information Resource Directory."

     As workaround, one could define new media types such as
     alto-directory_v2_0+json   or
     alto2-directory+json

Yeah.  There was a discussion when going to the REST-ful approach
about whether we wanted any explicit version numbers or not.  The idea
was that we didn't need an ALTO version number exposed to applications
if we used media types appropriately.  Using media types like you
suggested is certainly one approach.

Irrespectively of what mechanisms is being used, this protocol needs versioning support. However, I'm not sure that media-types are the best way forward for this.
What would be a different approach when using media types?



3.1.6.  Error Handling and Overload Protection

    REQ.  ARv14-28: An ALTO client protocol MUST use TCP based transport.

REQ.  ARv14-28:  Full compliant.  Protocol is based on HTTP (6.), which
     does not neccessarily run on top of TCP (see 1.4. of RFC 2616), but
     de-facto always does.


side note: IESG evaluation of the requirements document likely will
result in this requirement being changed to something like:

REQ.  ARv15-28 An ALTO client protocol MUST use a congestion-aware
transport protocol, e.g., TCP.

but this will not cause any problem here.


    REQ.  ARv14-29: An ALTO client protocol specification MUST specify
    mechanisms, or detail how to leverage appropriate mechanisms provided
    by underlying protocol layers, which can be used by an ALTO server to
    inform clients about an impending or occurring overload situation,
    and request them to throttle their query rate.

    In particular, a simple form of throttling is to let an ALTO server
    answer a query with an error message advising the client to retry the
    query later (e.g, using a protocol function such as HTTP's Retry-
    After header ([RFC2616], section 14.37).  Another simple option is to
    actually answer the query with the desired information, but adding an
    indication that the ALTO client should not send further queries to
    this ALTO server before an indicated period of time has elapsed.

    REQ.  ARv14-30: An ALTO client protocol specification MUST specify
    mechanisms, or detail how to leverage appropriate mechanisms provided
    by underlying protocol layers, which can be used by an ALTO server to
    inform clients about an impending or occurring overload situation,
    and redirect them to another ALTO server.

    REQ.  ARv14-31: An ALTO client protocol specification MUST specify
    mechanisms, or detail how to leverage appropriate mechanisms provided
    by underlying protocol layers, which can be used by an ALTO server to
    inform clients about an impending or occurring overload situation,
    and terminate the conversation with the ALTO client.

    REQ.  ARv14-32: An ALTO client protocol specification MUST specify
    mechanisms, or detail how to leverage appropriate mechanisms provided
    by underlying protocol layers, which can be used by an ALTO server to
    inform clients about its inability to answer queries due to technical
    problems or system maintenance, and advise them to retry the query
    later.

    REQ.  ARv14-33: An ALTO client protocol specification MUST specify
    mechanisms, or detail how to leverage appropriate mechanisms provided
    by underlying protocol layers, which can be used by an ALTO server to
    inform clients about its inability to answer queries due to technical
    problems or system maintenance, and redirect them to another ALTO
    server.

    REQ.  ARv14-34: An ALTO client protocol specification MUST specify
    mechanisms, or detail how to leverage appropriate mechanisms provided
    by underlying protocol layers, which can be used by an ALTO server to
    inform clients about its inability to answer queries due to technical
    problems or system maintenance, and terminate the conversation with
    the ALTO client.

REQ.  ARv14-29..34:  Partially compliant: The protocol is based on HTTP,
     which features various appropriate protocol mechanisms (R-A header,
     3xx and 503 replies, etc.), but no specific guidance is provided
     when and how to use them in conjunction with the ALTO protocol.

We also had a discussion about this in the protocol overhaul for
making it REST-ful.  The guidance we received there was to not repeat
details from RFC2616.  I'm not sure I see much utility in adding
specifics in the ALTO protocol document, since it would basically
amount to saying "If you think you are overloaded, you are free to
return a 503."  Then, if we were to add that, people would ask "you
gave me guidance on using 503, but you didn't tell me when I should or
should not use chunked transfer encoding.. how about that??"  The idea
was that the statements in Section 7.2, as well as some intelligence
on behalf of implementers on how to apply RFC2616, would answer all of
these questions.

That is not a good way of specifying things. There is no need to say how a 503 response looks like, but it is definitely good to say when an ALTO protocol must reply with such a code. "intelligence ...of implementers" will cause ALTO protocol implementations that do not interoperate.


3.2.  ALTO Server Discovery

REQ.  ARv14-35..42: not applicable to this document

3.3.  Security and Privacy

    REQ.  ARv14-43: An ALTO client protocol specification MUST specify
    mechanisms for the authentication of ALTO servers, or how to leverage
    appropriate mechanisms provided by underlying protocol layers.

REQ.  ARv14-43:  Full compliant: 7.2.5.

    REQ.  ARv14-44: An ALTO client protocol specification MUST specify
    mechanisms for the authentication of ALTO clients, or how to leverage
    appropriate mechanisms provided by underlying protocol layers.

REQ.  ARv14-44:  Full compliant: 7.2.5.

    REQ.  ARv14-45: An ALTO client protocol specification MUST specify
    mechanisms for the encryption of messages, or how to leverage
    appropriate mechanisms provided by underlying protocol layers.

REQ.  ARv14-45:  Full compliant: 7.2.5.

    REQ.  ARv14-46: An ALTO client is not required to implement
    mechanisms or to comply with rules that limit its ability to
    redistribute information retrieved from the ALTO server to third
    parties.

REQ.  ARv14-46: not applicable to this document. See also sec. 11.3.:
     "Digital Rights Management (DRM) techniques and legal agreements
     protecting ALTO information are outside of the scope of this
     document."

    REQ.  ARv14-47: An ALTO client protocol MUST support different levels
    of detail in queries and responses, in order to protect the privacy
    of users, to ensure that the operators of ALTO servers and other
    users of the same application cannot derive sensitive information.

REQ.  ARv14-47:  Full compliant.  Host Group Descriptors are always
     encoded as TypedEndpointAddr, which allows to use IP prefixes.
     Therefore it is possible to obfuscate the identity of candidate
     resource consumers, e.g., by specifying a broader address range
     (i.e., a shorter prefix length) than a group of hosts in question
     actually uses, or by zeroing-out or randomizing the last few bits of
     IP addresses.  However, there is the potential side effect of
     yielding inaccurate results.

    REQ.  ARv14-48: An ALTO client protocol MAY include mechanisms that
    can be used by the ALTO client when requesting guidance to specify
    the resource (e.g., content identifiers) it wants to access.  An ALTO
    server MUST provide adequate guidance even if the ALTO client prefers
    not to specify the desired resource (e.g., keeps the data field
    empty).  The mechanism MUST be designed in a way that the operator of
    the ALTO server cannot easily deduce the resource identifier (e.g.,
    file name in P2P file sharing) if the ALTO client prefers not to
    specify it.

REQ.  ARv14-48:  Full compliant.  The optional ("MAY") feature is not
     defined and therefore, the MUST-statements do not apply.

    REQ.  ARv14-49: An ALTO client protocol specification MUST specify
    appropriate mechanisms for protecting the ALTO service against DoS
    attacks, or how to leverage appropriate mechanisms provided by
    underlying protocol layers.

REQ.  ARv14-49:  Partially compliant: The protocol is based on HTTP,
     and protecting HTTP-based services against different kinds of
     attacks, including DoS attacks, is a rather well-understood issue.
     However, no specific guidance is provided for ALTO over HTTP.

Agree. See comment above.

Give at least guidance where to read on to protect against such threads. Otherwise this specification is incomplete.

  Martin


--
[email protected]

NEC Laboratories Europe - Network Research Division NEC Europe Limited
Registered Office: NEC House, 1 Victoria Road, London W3 6BL
Registered in England 283


_______________________________________________
alto mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/alto

Reply via email to