Hi all,
Please find below my review of draft-ietf-anima-grasp-11.
The comments below are about -11 of the draft, as I did work on this
version and did unfortunately not have time to go through -12.
I've reviewed this document as part of the transport area review team's
ongoing effort to review key IETF documents. These comments were written
primarily for the transport area directors, but are copied to the
document's authors for their information and to allow them to address
any issues raised. When done at the time of IETF Last Call, the authors
should consider this review together with any other last-call comments
they receive. Please always CC tsv-art@… if you reply to or forward this
review.
Summary:
This draft has serious issues, described in the review, and needs to be
rethought.
General comments:
* The title is partially misleading as this document is setting
requirements for the protocol and is additionally defining the protocol.
This is made obvious in the abstract, but nonetheless, the title is
misleading
* Document structure: I am not sure why the requirements are listed in
Section 2. The are never ever used in the document to motivate any
design decision or reference to. So what is the purpose of having these
requirements here? Couldn’t and shouldn’t they be listed in a separate
document?
* Security: There is no security proposed or discussed for GRASP in this
document. There are solely statements about generic security, such as in
Section 1 „a secure and strongly authenticated environment“ or Section
3.5.2.1. "Messages MUST be authenticated and encryption MUST be
implemented“. So how must they be authenticated and encrypted and why?
What is the standard set of protocols to be used for this and what is
the minimal set of crypto algorithms to be implemented to make this work?
************************************************************
This document is always using the escape hatch when it comes to security
in any respect!
************************************************************
* Usage of UDP: This document is not discussing any of the aspects in
RFC 8085. Every usage of UDP is required by IETF consensus to review RFC
8085 and to address at least the applicable subset of issues listed in
RFC 8085 (or the predecessor RFC 5405).
* Starting with UDP and switching to TCP for the data transfer looks
like the right do. However, UDP should be really only used to discover
other devices, but not piggy back further protocol mechanics. However,
this document is not really specific on how to make use of TCP, for
instance, how long are TCP connections kept open or closed down after a
protocol exchange (persistent vs temporary connections). What happens if
a TCP connection is shutdown by one end or is forcefully closed, e.g.,
by a reset?
* There is no versioning support in GRASP. Why are we still developing
protocols that do not have versioning support in it?
* IPv4/IPv6 simultaneous use: I believe the email describing the -12
update of the draft says that IPv4 and IPv6 should not be mixed, so I
can skip over this.
Detailed comments:
* Section 2.1: These are not protocol requirements but system
requirements. It would be really good to separate them in the list of
requirements.
* Section 2.1, Requirement D2: What is this requirements saying? Is it
„it should just work whatever?“
* Section 2.1, Requirement D7: What is the rest of the network in the
first bullet point? All anima devices or every single element of the
network?
* Section 2.2, Requirement SN7: I am not sure if any of these points in
this requirement related to any part of the GRAPS protocol. If so, you
can for sure add forward references or backward references in the
protocol specification.
* Section 2.3, T1 & T2 are good, but how is this fulfilled by the protocol?
* Section 3.2, end of page 12, „appropriate global-scope address“: so
GRASP is not intended to run networks that use private RFC 1918 addresses?
* Section 3.2, head of page 13: the discussion about interfaces. I am
not sure that calling GRASP interfaces just interfaces helps. Why not
calling interfaces interfaces and GRASP interfaces if the are used? or
active interfaces, etc?
* Section 3.3: This section is again bringing up a number of
requirements. Wrong place in the document?
* Section 3.3, page 14: the unsolicited flooding mode sounds really bad.
Has this aspect looked at in terms of how many GRAPS nodes are expected
to live on in a single link-local multicast domain (hoping that non
link-local multicast is excluded per se).
* Section 3.3: last bullet on page 14 and first bullet on page 15: what
is this saying other than it is complicated? Aren’t there any tangible
details to this?
* Section 3.4:
" An instance of GRASP is expected to run as a separate core module,
providing an API (such as [I-D.liu-anima-grasp-api]) to interface to
various ASAs. These ASAs may operate without special privilege,
unless they need it for other reasons (such as configuring IP
addresses or manipulating routing tables).“
This is implementation specific and does not belong in a protocol
specification.
* Section 3.5.1, page 17: „virtualized over the ACP“ — what does this
mean and how it is done?
* Section 3.5.1, page 17: „If there is no ACP, one“ there are two
options listed for this case, but which is used when?
* Section 3.5.1, page 17: „strong authentication“ — what is strong
authentication and what needs to be supported by a minimal, but
interoperable implementation? This is extremely underspecified.
* Section 3.5.1, page 17: "Network interfaces could be at different
security levels,“ what is a security level in the context of this
document and specifically here.
* Section 3.5.1, page 17: "discovery messages MUST be secured, with one
exception mentioned in“ — how secured? This is extremely underspecified.
* Section 3.5.2 s/GRAPS subject/GRAPS are subject/
* Section 3.5.2.1., page 17: "As mentioned in Section 3.3“ this isn’t
mentioned in this place or I cannot correlate it.
* Section 3.5.2.1., page 17
" implemented. TLS [RFC5246] and DTLS [RFC6347] based on a Public Key
Infrastructure (PKI) [RFC5280] are RECOMMENDED for this purpose.
Further details are out of scope for this document.“
How bad is this that TLS and DTLS are RECOMMENDED but the usage is not
specified?
* Section 3.5.2.2: Are there any measures in the protocol to ensure that
datagrams have really been sent on the same link? I haven’t seen any
measures.
* Section 3.5.2.3.:
" by TLS. A separate instance of GRASP is used, with its own copy of
all GRASP data structures. This instance is nicknamed SONN - Secure
Only Neighbor Negotiation.“
I am not sure why this document is trying to mandate how implementers
are organizing their implementation and how instances are named?
* Section 3.5.2.3, page 19, end of bullet list: "Further details are out
of scope for this document.“ What further details? Is the WG not sure
what the missing details are?
* Section 3.5.3.:
"They MUST NOT be fragmented, and therefore MUST
NOT exceed the link MTU size.“
How should the protocol ensure that such datagrams are not fragmented
and do not exceed the MTU?
* Section 3.5.3.: " Use of an unreliable transport protocol is therefore
NOT RECOMMENDED.“ — very good guidance — thank you! :-)
* Section 3.5.3., end of page 19:
* Section 3.5.4.4:
"Since the relay device is unaware of the timeout set by the original
initiator it SHOULD set a timeout at least equal to GRASP_DEF_TIMEOUT
milliseconds.“
The timeout set by the initiator seems to be important, so why is this
value not communicated by the initiator within GRASP?
* Section 3.5.5: It is unclear to me if the messages here are expected
to be sent over TCP or nor? This is not clear.
* Section 3.5.5, page 24 and also Section 3.5.6.1:
" request is sent (see Section 3.8.6). If no reply message of any kind
is received within a reasonable timeout, the negotiation request MAY
be repeated, with a newly generated Session ID (Section 3.7). An
exponential backoff SHOULD be used for subsequent repetitions.“
What is a reasonable time out? And why is this need if TCP is used? TCP
provides reliable data transfer…
* Section 3.5.5, page 24:
" about different objectives. Thus, GRASP is expected to be used in a
multi-threaded mode. Certain negotiation objectives may have
restrictions on multi-threading, for example to avoid over-allocating
resources.
„
Again, talking about the implementation. This is not a protocol
specification, isn’t it?
* Section 3.5.6.2 (and other places in the document): What is the GRASP
core?
* Section 3.5.6.2, page 26:
„ the result is zero. Also, it MUST limit the total rate at which it
relays Flood Synchronization messages to a reasonable value, in order
to mitigate possible denial of service attacks. It MUST cache the
„
What is a reasonable value?
* Message encoding: What is the encoding to be supported for "reason =
text ;optional error message“ Is there are any minimal standard to be
supported, such as 7 bit ASCII or UTF-8 or whatever?
Best regards,
Martin Stiemerling
_______________________________________________
Anima mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/anima