Re: [P2PSIP] comments on draft-maenpaa-p2psip-topologyplugin-00

Jouni Mäenpää <jouni.maenpaa@ericsson.com> Mon, 24 August 2009 11:17 UTC

Return-Path: <jouni.maenpaa@ericsson.com>
X-Original-To: p2psip@core3.amsl.com
Delivered-To: p2psip@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 2D0533A6A0C for <p2psip@core3.amsl.com>; Mon, 24 Aug 2009 04:17:28 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.949
X-Spam-Level:
X-Spam-Status: No, score=-5.949 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, HELO_EQ_SE=0.35, MIME_8BIT_HEADER=0.3, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ebRbn1fmnhvi for <p2psip@core3.amsl.com>; Mon, 24 Aug 2009 04:17:27 -0700 (PDT)
Received: from mailgw3.ericsson.se (mailgw3.ericsson.se [193.180.251.60]) by core3.amsl.com (Postfix) with ESMTP id 52A843A681D for <p2psip@ietf.org>; Mon, 24 Aug 2009 04:17:25 -0700 (PDT)
X-AuditID: c1b4fb3c-b7bcbae000007452-54-4a9276cae481
Received: from esealmw128.eemea.ericsson.se (Unknown_Domain [153.88.253.125]) by mailgw3.ericsson.se (Symantec Mail Security) with SMTP id 1D.E9.29778.AC6729A4; Mon, 24 Aug 2009 13:17:31 +0200 (CEST)
Received: from esealmw126.eemea.ericsson.se ([153.88.254.170]) by esealmw128.eemea.ericsson.se with Microsoft SMTPSVC(6.0.3790.3959); Mon, 24 Aug 2009 13:17:06 +0200
Received: from mail.lmf.ericsson.se ([131.160.11.50]) by esealmw126.eemea.ericsson.se with Microsoft SMTPSVC(6.0.3790.3959); Mon, 24 Aug 2009 13:17:05 +0200
Received: from nomadiclab.lmf.ericsson.se (nomadiclab.lmf.ericsson.se [131.160.33.3]) by mail.lmf.ericsson.se (Postfix) with ESMTP id 96CDD24DC; Mon, 24 Aug 2009 14:17:05 +0300 (EEST)
Received: from nomadiclab.lmf.ericsson.se (localhost [127.0.0.1]) by nomadiclab.lmf.ericsson.se (Postfix) with ESMTP id 5EF6921A0F; Mon, 24 Aug 2009 14:17:05 +0300 (EEST)
Received: from [127.0.0.1] (localhost [127.0.0.1]) by nomadiclab.lmf.ericsson.se (Postfix) with ESMTP id ED9FB219CF; Mon, 24 Aug 2009 14:17:04 +0300 (EEST)
Message-ID: <4A9276B1.7010906@ericsson.com>
Date: Mon, 24 Aug 2009 14:17:05 +0300
From: Jouni Mäenpää <jouni.maenpaa@ericsson.com>
User-Agent: Thunderbird 2.0.0.17 (X11/20080925)
MIME-Version: 1.0
To: Bruce Lowekamp <bbl@lowekamp.net>
References: <bc023dcd0908162126r26cdbd9el6a2144e748e78402@mail.gmail.com>
In-Reply-To: <bc023dcd0908162126r26cdbd9el6a2144e748e78402@mail.gmail.com>
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 7bit
X-Virus-Scanned: ClamAV using ClamSMTP
X-OriginalArrivalTime: 24 Aug 2009 11:17:05.0689 (UTC) FILETIME=[6986B090:01CA24AC]
X-Brightmail-Tracker: AAAAAA==
Cc: draft-maenpaa-p2psip-topologyplugin <draft-maenpaa-p2psip-topologyplugin@tools.ietf.org>, p2psip <p2psip@ietf.org>
Subject: Re: [P2PSIP] comments on draft-maenpaa-p2psip-topologyplugin-00
X-BeenThere: p2psip@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Peer-to-Peer SIP working group discussion list <p2psip.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/p2psip>, <mailto:p2psip-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/p2psip>
List-Post: <mailto:p2psip@ietf.org>
List-Help: <mailto:p2psip-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/p2psip>, <mailto:p2psip-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 24 Aug 2009 11:17:28 -0000

Hi Bruce,

Thanks for your comments! See my answers inline.

> I think drafts that discuss alternative/extension overlay algorithms
> are a great contribution and appreciate the authors writing this
> draft.  Would be really nice to get WG effort behind making some of
> these concepts WG items.

I'm glad to hear that.

> The draft refers to "real world" environments a lot.  This term is
> relatively meaningless (or, more precisely, means different things to
> each reader).  

The term "real world" was a poor choice. We will replace that.

> Define use cases where the draft is necessary or offers
> performance improvements and make concrete claims.  Obviously
> many/most large-scale overlays with moderate churn perform better with
> some of the techniques.  State that or something similar and the
> overlay algorithm features that are needed for that/those use case(s).
>  Similarly, state the use case that requires load balancing.  The
> basic sip usage is probably not one of them given the small size of
> registrations.   But an eventual voicemail usage is likely to be a
> supporting use case, for example.   Remember that there are real world
> use cases where this algorithm behaves more poorly than the default
> RELOAD algorithm.  For example, a small-office phone system is a real
> world use case.  It's one that is typically ignored by much of the P2P
> community, but it is one of the motivating use cases in P2PSIP.

I agree that adding use cases would improve the draft. We'll define them
in the next version.

> I'm not immediately convinced of the usefulness of the load balancing
> concept.  In particular, the load balancing aims to balance out the
> uneven load that is the natural result of hashing and uneven peer
> spacing.  However, for many use cases load imbalance seems to be more
> a function of resource size distribution rather than uneven mapping.
> For example, a file sharing usage might have several orders of
> magnitude variation in resource size, whereas uneven mapping is a
> factor of O(log(N)).  To me, it's much more important to solve the
> large file problem by dividing large files among multiple locations.
> Once that is done, using virtual servers to balance mapping and
> account for device capacity becomes more pressing.  While I can see
> that an optimal chunking might be usage-specific, I can also see a lot
> of use of it as a general service.  The security mechanisms remain a
> challenge there.
> 
> How does one run UpdateAlphaDelta when using an enrollment server/CA
> for certificates?  I don't see this addressed anywhere.
> 
> There are obvious important benefits to using periodic stabilization
> in certain circumstances.  However, the way the virtual server load
> balancing is specified appears to me to be produce at least an order
> of magnitude more traffic in response to peer changes than a reactive
> stabilization algorithm.  For example, in the event of a finger table
> entry failure, the peer Leaves all of its virtual server locations
> (with associated resource transfers), identifies a new set of virtual
> server IDs, then reJoins at the new addresses and transfers resources.
>  By comparison, reactive stabilization sends a few Updates when a
> neighbor fails.

Perhaps Ashwin or Saumitra can answer the load balancing related
questions better than I can, since they wrote those parts of the draft.
If people think that load balancing is needed only in a subset of use
cases, then one possible way forward would be to make load balancing
optional and specify it separately from the rest of the mechanisms.

> In the UpdateReq and a few other places, the sender asserts their ids
> in a message structure.  Those need to be obtained from a certificate,
> not from the message body.

If you are referring to the sender_id parameter, our intention was to
remove it from the current version of the draft (it turned out that it
is not actually needed), but somehow we forgot to do that.

> There are some reactive elements to the periodic stabilization
> algorithm.  For example, on successor failure, the peer walks its
> successor list pulling from each.  A reactive pull rather than a
> reactive push is still a reactive algorithm.

The current draft is the result of a merge of two earlier drafts,
draft-saumitra-p2psip-loadbalance-00 and
draft-maenpaa-p2psip-self-tuning-00. The former used reactive
stabilization (as it was an extension to the Chord algorithm of RELOAD
base), whereas the latter one used periodic stabilization. Our intention
was to make the algorithm in the current draft completely periodic.
However, it seems that we didn't manage to remove all the reactive
elements from the algorithm. We will look into that in the next version
of the draft.

> Section 6 uses almost entirely SHOULD rather than MUST.  I am fairly
> sure that an implementation that did not implement any of the SHOULDs
> would fail to work entirely.  I suspect that almost all SHOULDs should
> be MUST.  It's helpful to indicate what a reason might be for not
> implementing a SHOULD when SHOULD is appropriate.  (Henning can make
> this argument with a lot more passion, if necessary.)

Ok, thanks for pointing this out.

> I really like the effort on adaptive stabilization.   One factor to
> consider, though, is whether keepalives of some sort (possibly NAT
> binding keepalives) need to be sent more often than necessary based on
> peer failure, and those keepalives might as well be a basic Update.
> Sort of a complex question based on the cost of a STUN keepalive vs
> p2p layer, but I think it's an interesting question.

Keepalives or basic Updates would definitely help in detecting peer
failure faster. We will look into this.

> The next two comments are aimed at making the text clearer.  First, I
> should be clear that I'm not going to claim I've never done these in
> writing text (and I think there are still parts of the base draft that
> need to have these applied).
> 
> A lot of the text merges analysis/justification with normative text.
> Implementers don't care about the analysis, and even for those who do
> it makes it harder to find the normative text.  Separate these where
> possible, ideally into separate sections, but at least separate
> paragraphs.
> 
> A number of aspects of the algorithm are of the form (this is not a
> real extract):
> - when y fails, send a probe to ID t for a new entry
> - when receiving response for ID t from peer q, send an Attach to q
> - once the Attach completes, send an Update to q
> While this is great in descriptive text, the implementation is
> entirely different since the implementation has to be asynchronous.
> And while IETF isn't about implementation, there are a lot of protocol
> correctness issues left exposed here (what happens if a better peer
> than q is identified in between sending the Attach and it
> completing?).  Better to write normative text that specifies a single
> reaction when an event happens.  For example, you might write that
> when a better finger table entry is identified, an Attach is sent to
> it.  Specified entirely separately (and possibly somewhere else),
> finger table and neighborhood entries are updated when an Attach
> completes for a better match than the current entry.  This also avoids
> missing stating obvious things everywhere, like in 6.4 where it isn't
> entirely clear that an Attach needs to be completed before updating
> the neighbor list.

We will try to separate analysis and normative text in the next version.

Thanks,
Jouni