Re: [ppsp] peer protocol in WG last call

Riccardo Bernardini <riccardo.bernardini@uniud.it> Fri, 23 November 2012 17:13 UTC

Return-Path: <riccardo.bernardini@uniud.it>
X-Original-To: ppsp@ietfa.amsl.com
Delivered-To: ppsp@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 6D32521F8471 for <ppsp@ietfa.amsl.com>; Fri, 23 Nov 2012 09:13:33 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 1.881
X-Spam-Level: *
X-Spam-Status: No, score=1.881 tagged_above=-999 required=5 tests=[BAYES_50=0.001, HELO_EQ_IT=0.635, HOST_EQ_IT=1.245]
Received: from mail.ietf.org ([64.170.98.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id lfHXLCyn8Z2R for <ppsp@ietfa.amsl.com>; Fri, 23 Nov 2012 09:13:32 -0800 (PST)
Received: from delivery.uniud.it (mail.uniud.it [158.110.1.210]) by ietfa.amsl.com (Postfix) with ESMTP id 4519121F8561 for <ppsp@ietf.org>; Fri, 23 Nov 2012 09:13:31 -0800 (PST)
Received: from nospam.uniud.it (nospam.uniud.it [158.110.1.213]) by delivery.uniud.it (Postfix) with ESMTP id 6A286B72A49; Fri, 23 Nov 2012 18:13:29 +0100 (CET)
X-Virus-Scanned: Debian amavisd-new at talitha1
Received: from smtp.uniud.it ([158.110.1.136]) by nospam.uniud.it (nospam.uniud.it [158.110.1.213]) (amavisd-new, port 10028) with ESMTP id tCz9DPeu7Dtz; Fri, 23 Nov 2012 18:13:28 +0100 (CET)
Received: from webmail.uniud.it (webmail2.cc.uniud.it [158.110.1.188]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.uniud.it (Postfix) with ESMTPSA id 65A9FB0035; Fri, 23 Nov 2012 18:13:28 +0100 (CET)
Received: from 158.110.27.77 ([158.110.27.77]) by webmail.uniud.it (Horde Framework) with HTTP; Fri, 23 Nov 2012 18:13:28 +0100
Message-ID: <20121123181328.10352avqtdet10oo@webmail.uniud.it>
Date: Fri, 23 Nov 2012 18:13:28 +0100
From: Riccardo Bernardini <riccardo.bernardini@uniud.it>
To: arno@cs.vu.nl
References: <E6B2DF43-8D66-4092-8210-E86225FA251E@cisco.com> <F0DAB28A-870B-4E6B-AFB6-0D803164E7B4@cisco.com> <20121119114547.60502iibxkcnt0bf@webmail.uniud.it> <50ACCDF2.9070402@cs.vu.nl>
In-Reply-To: <50ACCDF2.9070402@cs.vu.nl>
MIME-Version: 1.0
Content-Type: text/plain; charset="ISO-8859-1"; DelSp="Yes"; format="flowed"
Content-Disposition: inline
Content-Transfer-Encoding: 7bit
User-Agent: Internet Messaging Program (IMP) H3 (4.3.7)
Cc: ppsp@ietf.org
Subject: Re: [ppsp] peer protocol in WG last call
X-BeenThere: ppsp@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: discussing to draw up peer to peer streaming protocol <ppsp.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ppsp>, <mailto:ppsp-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/ppsp>
List-Post: <mailto:ppsp@ietf.org>
List-Help: <mailto:ppsp-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ppsp>, <mailto:ppsp-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 23 Nov 2012 17:13:33 -0000

Hi Arno,
please see inline.

Arno Bakker <arno@cs.vu.nl> ha scritto:

> Hi Riccardo
>
> thanks for the in-depth review! Please see inline.
>
> On 19/11/2012 11:45, Riccardo Bernardini wrote:
>>
>> First, the easy stuff.  Some typos:
>>
>
> Will be corrected.
>
>
>> Now to the "consistent" stuff:
>>
>> == Page 9, Section 2.3 ==
>>     "If A crashes ungracefully, peers should remove A from their peer
>> list when they detect it no longer send messages."
>>
>> How much is "too much"?  Should we leave the peer free
>> to decide or should we give at least some guidelines?
>>
>
> Your proposal makes sense, I'm just not sure what is customary in RFCs.
> Should this go in this draft or in the planned usage guide?
> Chairs?
>
>
>> Also, there is the problem that when A crashes it remains registered
>> with the tracker, although maybe this is not a problem directly
>> related with PPSPP.
>>
>
> This is addressed in the current base tracker proposal. A peer needs  
> to periodically refresh its registration to stay tracked.
>
>
>> == Page 10, Section 3 ==
>>
>>    It is said that "absence of any response indicates and error" and
>> that "Invalid messages are discarded, and further communication with
>> the peer SHOULD be stopped."
>>
>> Isn't this criterion a bit too strong?  If a request is lost (e.g.,
>> because of congestion), the sender will interpret the absence of
>> response as an error or a bad peer.  Also, how long should a peer wait
>> for declaring absence of response?  Should we give guidelines?
>>
>
> We could give guidelines, but again, I'm not sure that is customary.  
> I assume implementers apply common sense and, for example, not  
> declare a peer dead after 1 packet loss over an unreliable  
> transport. Invalid messages mean that there is really something  
> wrong and that sender and receiver don't understand eachother, so  
> then the receiver really should stop the interaction.
>
>
>> == Page 12, Section 3.9. ==
>>
>> It is said "The CHOKE and UNCHOKE messages are informational as a peer
>> is not required to respond to REQUESTs."  However, if I understand
>> correctly, if a peer does not respond to REQUESTs, the peer will be
>> banned, according to the criterion in Section 3.  Am I missing
>> something?
>>
>
> No, I don't think you are missing something. The idea is that a peer  
> P requesting chunks from peer Q will look for another peer R when Q  
> doesn't send chunks, and Q didn't send a CHOKE to announce the fact  
> it wouldn't be responding. P should take into account packet loss  
> and swarm size (if there is just 1 other peer in the swarm, don't  
> disconnect), of course. If P is not getting chunks from Q it moves on.
>
>
>> == Page 13, Section 3.10.2 ==
>>
>> I have a couple of doubts about this
>>
>>    * This supposes that A can send messages to B.
>>
>>      so this should not be a problem. Would it be worth adding a
>> sentence to emphasize this point? (e.g. "Note that A can send a
>> message to B since by 3.10.1 A must have exchanged messages with C..."
>
> Sure.
>
>
>>   * With this model of hole punching, the peer can only connect
>> initially to peers with public IP; in particular, the addresses
>> provided by the tracker must be public IPs.  Am I right?
>>
>
> Yes.
>
>
>> == Page 16, last paragraph of Section 4.3.1 ==
>>
>>     Implementation note:
>>         To record which chunks ... discussed in detail in [BINMAP]
>>
>
> You are right.
>
>
>> == Page 16, Section 4.3.2 ==
>>
>> Another stylistic detail.  It is said that "...an implementation MAY
>> choose to use ACK messages..." than later "When a receiving peer has
>> successfully checked ... it MUST send an ACK message...".
>
> Will be corrected.
>
>
>> == Top of Page 17, Section 4.4 ==
>>
>>    "When a range translates to multiple bins, the byte-range peer the
>> byte-range peer should send multiple e.g. HAVE message."
>>
>> This sentence looks a bit garbled, at the very least "the byte-range
>> peer" is repeated twice.
>>
>
> Will be corrected.
>
>
>> == Page 20, Section 5.3 ==
>>
>>    "The hashes necessary to verify a chunk are in principle its
>> sibling's hash and all its uncle hashes ... can be optimized "
>>
>> If I understand correctly, this optimization requires that a peer MUST
>> save and preserve all the received hashes.
>
> Yes. The requirement that a sender must be able to provide these  
> hashes implies that you should record them. I'll explicitly add the  
> conclusion that this means you MUST record them, *if* you plan to  
> announce you have them to others.
>
> In other words, limited devices can circument this requirement by  
> not sending HAVEs to others after they received a chunk. Hence they  
> are not announcing the availability and are not required to provide  
> them. Not sending HAVEs is allowed by the protocol. Note, however,  
> that this does require that the implementation uses a reciprocity  
> policy that allows this behaviour, as the limited devices are  
> actually freeriding.
>
>
>> == Page 29, Section 8.2. "Version option" ==
>>
>> Maybe this is thinking a bit in advance, but what should a peer set as
>> version value when the peer is able to "speak" more than one protocol
>> version?
>
> Do you have pointers to protocols where this mechanism is used? This  
> could save a few roundtrips of HANDSHAKE messages, so good for  
> time-till-playback if there are indeed several incompatible  
> versions, which I hope there will not be ;o)

[Riccardo]
No specific protocol comes to my mind.  I checked the RFC 6709 "Design  
Considerations for Protocol Extensions"  
(http://tools.ietf.org/html/rfc6709) for hints.  In Section 4.1 there  
is a list of possible solutions for protocol versioning.  Should I  
propose a solution here "on the spot," I would suggest, inspired by  
the RFC, to make the payload of the version option a string of bytes,  
one for every supported version.
Suppose node A initiates the connection toward node B. Node A puts in  
the option all the version it supports, B picks a supported version  
(maybe the largest one?[supposing that later versions are better]) and  
sends back the HANDSHAKE with a single value in the option field.
An alternative solution, where the option payload has a fixed length,  
could be that A puts the numbers of the oldest and the newest  
supported version and B picks one version in that interval.

>
>
>> == Page 34, Section 9.3. Channels ==
>>
>> It is said that
>>
>>    "... PPSPP-over-UDP uses a multiplexing scheme, called "channels"..."
>>
>> Later it is said that
>>
>>    "When channels are used..."
>>
>> My doubt is: is the use of channels mandatory with UDP?  If yes, the
>> hypothesis "when channels are used..." is redundant;
>
> Yes it is mandatory. Pardon me if I'm wrong, but your point may just  
> be grammatical, "When X" in English implies that X will be the case  
> at some point. So you say "When I die" not "If I die", but I'm not a  
> native speaker myself. I'll make it clearer.

[Riccardo]
I am not a native speaker, either. Maybe some native English speaker  
could help us here.

>
>
>> == Page 42, Section 13.2.2. ==
>>
>> This section is about using the tracker as certification authority.
>> It is said
>>
>>    "Upon receipt, the tracker creates a membership certificate from
>> the request with swarm ID S, a timestamp T and the external IP and
>> port it received the message from..."
>>
>> Am I wrong, or this scheme could fail if the peer is behind a
>> symmetric NAT?  Would it be worth to add at least a note about this?
>>
>
> You are right, but that problem applies for any tracker registration.
> I'll add a note.
>
> CU,
>     Arno

Riccardo

> _______________________________________________
> ppsp mailing list
> ppsp@ietf.org
> https://www.ietf.org/mailman/listinfo/ppsp
>



-- 
Riccardo Bernardini
DIEGM -- University of Udine
via delle Scienze 208
33100 Udine
Tel: +39-0432-55-8271
Fax: +39-0432-55-8251

----------------------------------------------------------------------
SEMEL (SErvizio di Messaging ELettronico) - AINF, Universita' di Udine