[P2PSIP] comments on draft-maenpaa-p2psip-topologyplugin-00
Bruce Lowekamp <bbl@lowekamp.net> Mon, 17 August 2009 04:26 UTC
Return-Path: <bbl@lowekamp.net>
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 245763A6D4E for <p2psip@core3.amsl.com>; Sun, 16 Aug 2009 21:26:40 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.882
X-Spam-Level:
X-Spam-Status: No, score=-0.882 tagged_above=-999 required=5 tests=[AWL=-0.764, BAYES_20=-0.74, FM_FORGED_GMAIL=0.622]
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 AsJ5XftMpjFW for <p2psip@core3.amsl.com>; Sun, 16 Aug 2009 21:26:39 -0700 (PDT)
Received: from mail-fx0-f222.google.com (mail-fx0-f222.google.com [209.85.220.222]) by core3.amsl.com (Postfix) with ESMTP id C6F4D3A6B9D for <p2psip@ietf.org>; Sun, 16 Aug 2009 21:26:38 -0700 (PDT)
Received: by fxm22 with SMTP id 22so2414070fxm.9 for <p2psip@ietf.org>; Sun, 16 Aug 2009 21:26:42 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.103.80.23 with SMTP id h23mr1136201mul.88.1250483202561; Sun, 16 Aug 2009 21:26:42 -0700 (PDT)
Date: Mon, 17 Aug 2009 00:26:42 -0400
Message-ID: <bc023dcd0908162126r26cdbd9el6a2144e748e78402@mail.gmail.com>
From: Bruce Lowekamp <bbl@lowekamp.net>
To: p2psip <p2psip@ietf.org>, draft-maenpaa-p2psip-topologyplugin <draft-maenpaa-p2psip-topologyplugin@tools.ietf.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Subject: [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, 17 Aug 2009 04:26:40 -0000
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. Bruce --------------------- The draft refers to "real world" environments a lot. This term is relatively meaningless (or, more precisely, means different things to each reader). 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'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. 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. 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. 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.) 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. 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.
- [P2PSIP] comments on draft-maenpaa-p2psip-topolog… Bruce Lowekamp
- Re: [P2PSIP] comments on draft-maenpaa-p2psip-top… Jouni Mäenpää