Re: updated TURN draft

Remi Denis-Courmont <[email protected]> Wed, 27 Jul 2005 13:58:49 +0300
Newsgroups gmane.ietf.midcom
Organization Nokia-NRC/Helsinki
Message-ID <[email protected]>
	Hello,

Le mar 26/07/2005 =C3=A0 00:04, ext Jonathan Rosenberg a =C3=A9crit :
> I did an update to the turn spec. I goofed on the I-D boilerplate, so=20
> there is a good chance it won't make it into the repository, in which=20
> case I'll submit right after ietf. Either way, you can pick up the=20
> update draft here:
>=20
> http://www.jdrosen.net/papers/draft-rosenberg-midcom-turn-08.txt

The newly defined Set Destination Error Response message has the same ID
as the older, and still present, Data Indication message. I suppose one
can discriminate them by looking for a DATA attribute, but it still
sounds like a mistake.


Other than that, a few other minor problems:

=C2=A7 7.1
The NONCE value should supposedly be checked


=C2=A7 7.5
The expiry detection algorithm is designed so that it might actually
take almost twice as long as LIFETIME to expire: if the last activity
occurs shortly after the timer fires, the binding won't be expired on
next timer firing, but only on the one after. Ok, this is not really an
issue. But why not leave TURN servers implementations free to implement
expiry as they want, so long as no binding is closed after at least
<LIFETIME> seconds of inactivity under normal server operation?


=C2=A7 8.2
Unknown error codes in the 400-499 range should be handled like 400.
Alas, the behavior for error code 400 is not explicitly defined.


Suggestions
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

=C2=A7 9.2.7 (still in draft 08)
Specify how the DATA attribute is supposed to, or not to, be aligned on
a 32-bits boundary. If it has to be aligned, how should TURN client
determine the actual length of the original payload if it was not a
multiple of 4 bytes?


=C2=A7 5 (near the end) and 7.6 (near the end)
TURN servers have to close a TCP connection if the other associated TCP
connection is closed. But TCP connection can be half-closed (i.e. with
BSD socket call shutdown()). It might be a good idea to specify more
explicitly that if some connection is half-closed, the associated one
should be half-closed accordingly.

There might actually be some applications that perform half-closure
because they know that the TCP session will only be used in one way.


=C2=A7 7.4 and 8.6
Maybe, specify that server ignores Out-of-band TCP data and client are
not allowed to send Out-of-band data over TCP connections. But
out-of-band is admittedly hardly ever used anyway.


=C2=A7 10
It might be noted that, as other kind of proxies, operators of TURN
servers should not trust network traffic sent by the system. In
particular, loopback traffic, which is usually considered trustworthy
might actually be controlled by any user of the server. Even though
these users are authenticated, they are probably not as trustworthy as
users with local accounts on the system operating the TURN server.


Trivial issues
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

=C2=A7 7.2.2
"(See Section 10." lacks a closing parenthesis.


=C2=A7 11
The following chunk of sentence seems to be syntaxically incorrect :
"through a collaborative protocol reflection mechanism RFC 3424 [12]."
(DISCLAIMER: I am not a native english speaker)


With all due respect, regards,

--=20
R=C3=A9mi Denis-Courmont <[email protected]>
Nokia-NRC/Helsinki