Re: [P2PSIP] WGLC for draft-ietf-p2psip-service-discovery-06

Marc Petit-Huguenin <petithug@acm.org> Tue, 26 February 2013 19:58 UTC

Return-Path: <petithug@acm.org>
X-Original-To: p2psip@ietfa.amsl.com
Delivered-To: p2psip@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 19E4221F86B2 for <p2psip@ietfa.amsl.com>; Tue, 26 Feb 2013 11:58:10 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -101.819
X-Spam-Level:
X-Spam-Status: No, score=-101.819 tagged_above=-999 required=5 tests=[AWL=-0.719, BAYES_00=-2.599, J_CHICKENPOX_12=0.6, J_CHICKENPOX_15=0.6, MIME_8BIT_HEADER=0.3, NO_RELAYS=-0.001, USER_IN_WHITELIST=-100]
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 NeB+t3tCwJFJ for <p2psip@ietfa.amsl.com>; Tue, 26 Feb 2013 11:58:08 -0800 (PST)
Received: from implementers.org (implementers.org [IPv6:2604:3400:dc1:41:216:3eff:fe5b:8240]) by ietfa.amsl.com (Postfix) with ESMTP id 2D9BD21F87D6 for <p2psip@ietf.org>; Tue, 26 Feb 2013 11:58:02 -0800 (PST)
Received: from [IPv6:2601:9:4b80:32:21c7:2154:4ebf:7150] (unknown [IPv6:2601:9:4b80:32:21c7:2154:4ebf:7150]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client CN "Marc Petit-Huguenin", Issuer "implementers.org" (verified OK)) by implementers.org (Postfix) with ESMTPS id 11237204B0; Tue, 26 Feb 2013 19:58:00 +0000 (UTC)
Message-ID: <512D13CB.9040606@acm.org>
Date: Tue, 26 Feb 2013 11:58:03 -0800
From: Marc Petit-Huguenin <petithug@acm.org>
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:10.0.12) Gecko/20130116 Icedove/10.0.12
MIME-Version: 1.0
To: Jouni Mäenpää <jouni.maenpaa@ericsson.com>
References: <1359673911.4472.18.camel@acorde.it.uc3m.es> <511D341E.6060905@acm.org> <511E0E0B.6070103@hs-mannheim.de> <511E6779.80706@acm.org> <27112A697EB8204D9943EAB8A0E16B710753ED3E@ESESSMB305.ericsson.se> <51220EA9.2060200@hs-mannheim.de> <27112A697EB8204D9943EAB8A0E16B7107545D2D@ESESSMB305.ericsson.se> <27112A697EB8204D9943EAB8A0E16B710754C5D7@ESESSMB305.ericsson.se>
In-Reply-To: <27112A697EB8204D9943EAB8A0E16B710754C5D7@ESESSMB305.ericsson.se>
X-Enigmail-Version: 1.4.1
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
Cc: "p2psip-chairs@tools.ietf.org" <p2psip-chairs@tools.ietf.org>, "p2psip@ietf.org" <p2psip@ietf.org>
Subject: Re: [P2PSIP] WGLC for draft-ietf-p2psip-service-discovery-06
X-BeenThere: p2psip@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Peer-to-Peer SIP working group discussion list <p2psip.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/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: Tue, 26 Feb 2013 19:58:10 -0000

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

This new version addresses all my comments, and is really better at explaining
how Redir works.

Thanks.

On 02/23/2013 12:59 AM, Jouni Mäenpää wrote:
> Hi,
> 
> The comments below have now been addressed in version -08 of the draft. The
> changes in the new version include:
> 
> - The temporary local caching mechanism for RedirServiceProvider records
> fetched during a service lookup operation that is described below was added
> to the draft - The text was clarified further - New examples were added to
> clarify how ReDiR tree nodes are numbered and how intervals are assigned to
> tree nodes
> 
> Regards, Jouni
> 
> -----Original Message----- From: p2psip-bounces@ietf.org
> [mailto:p2psip-bounces@ietf.org] On Behalf Of Jouni Mäenpää Sent: 18.
> helmikuuta 2013 21:25 To: Joscha Schneider Cc:
> p2psip-chairs@tools.ietf.org; p2psip@ietf.org Subject: Re: [P2PSIP] WGLC
> for draft-ietf-p2psip-service-discovery-06
> 
> Hi Joscha,
> 
> Thanks for the comments! Answering the first comment inline, need some more
> time to check the second comment.
> 
> Regards, Jouni
> 
> -----Original Message----- From: Joscha Schneider
> [mailto:j.schneider@hs-mannheim.de] Sent: 18. helmikuuta 2013 13:21 To:
> Jouni Mäenpää Cc: Marc Petit-Huguenin; p2psip-chairs@tools.ietf.org;
> p2psip@ietf.org Subject: Re: [P2PSIP] WGLC for
> draft-ietf-p2psip-service-discovery-06
> 
> two comments inline
> 
> regards joscha
> 
> 
> Am 16.02.2013 18:55, schrieb Jouni Mäenpää:
>> Hi Marc and Joscha,
>> 
>> Thanks for the comments! Answers inline.
>> 
>> Regards, Jouni
>> 
>> -----Original Message----- From: p2psip-bounces@ietf.org
>> [mailto:p2psip-bounces@ietf.org] On Behalf Of Joscha Schneider Sent: 15.
>> helmikuuta 2013 12:30 To: Marc Petit-Huguenin Cc:
>> p2psip-chairs@tools.ietf.org; p2psip@ietf.org Subject: Re: [P2PSIP] WGLC
>> for draft-ietf-p2psip-service-discovery-06
>> 
>> I can confirm that the draft might need some improvements to make the
>> implementation easier. I did a basic implementation but I'm not quite
>> sure that I handled everything correct.
>> 
>> [Jouni]: I'll try to improve the text in the next version of the draft.
>> 
>> Especially the definition of the successor seams a bit unclear for me. A
>> simple example: Only a single service provider with Node-ID 2 provides a
>> service. Node with ID 7 performs a lookup... How should it be handled? I
>> implemented it as follows: in case a lookup reveals only a single service
>> provider it must be the direct successor.
>> 
>> [Jouni]: What would happen in this case is that the upward walk of the
>> service lookup reaches the root level because no successor can be found
>> from the lower levels in the tree. In my implementation, when this
>> happens, I'm selecting either the closest successor at the root level or,
>> if there is no successor, select one of the available service providers
>> randomly (or pick the only service provider if there is only one like you
>> are doing in your implementation). Anyway, I'll add text to clarify this
>> to the next version of the draft.
>> 
>> Further notice, due to the periodically triggered re-registration the
>> consistency of the ReDiR tree can not be always ensured. Theoretically
>> this can lead to failed lookup processes. This derives from the fact that
>> each new service provider registration might affect the re-registration
>> of the former service providers which again might affect the
>> re-registrations of other service providers.
>> 
>> [Jouni]: Not sure about this. I could be wrong, but why would the
>> re-registration of a service provider affect the re-registrations of
>> other service providers? I mean, when a service provider X re-registers
>> or registers, it simply stores its own record at different levels in the
>> ReDiR tree as a part of the upward and downward walks. This
>> re-registration process does not influence the (re-)registrations of
>> other service providers. Or did I understand your comment incorrectly?
> 
>> I'll try to make an example: Two service provider are even in Level 4 in
>> the same interval. First service prover (X) stops registration downwalk
>> at level 2 because it's the only one. Second service provider (Y) goes
>> down to level 3 to finish its downwalk. X starts re-registration. Now the
>> downwalk need to go down to level 4 as level 2 and 3 are shared Y.
> Now Y starts re-registration. Goes down to level 5 as level 3 and 4 are
> shared now. X re-registers again. goes down to level 5. Finally both
> service providers have found the leaves and the tree is consistent. In
> between, service lookups might go down to a level at which no service
> provider information is stored (yet).
> 
> [Jouni]: Ok, I think you're right, that can happen. How often do you think
> it would occur? The default branching factor of the ReDiR tree is 10. I
> guess that the Node-IDs of the service providers that are (re-)registering
> at the same time would need to be very close to each other in order for the
> service providers to end up into the same interval at two levels of the
> tree (with the default branching factor of 10, level 2 has 1000 intervals,
> level 3 10000, level 5, 100000, etc.).
> 
> I guess there might also be other similar situations, though, such as when
> a RedirServiceProvider record expires within a given interval at some level
> just before a service lookup for which that record is the closest successor
> reaches that level and interval, and before the re-registration stores a
> new RedirServiceProvider record in that interval. This situation should be
> quite rare, though.
> 
> One potential strategy for dealing with the situations above is to fail the
> service lookup procedure and retry it - if the temporary inconsistency has
> been fixed by a re-registration between the old and new service lookup, the
> new service lookup will succeed.
> 
> Another strategy that we are using in our ReDiR implementation is that we
> are temporarily (for the duration of a service lookup) caching/storing the
> RedirServiceProvider entries fetched during that specific service lookup at
> the peer that is carrying out the service lookup. Thus, if for whatever
> reason the service lookup would happen to go down to a level at which no
> service provider information is stored, the peer that is carrying out the
> search can go through the locally cached RedirServiceProvider entries to
> find the closest successor of the search key from among the cached entries.
> This strategy would allow one to recover from the scenarios described
> above. Do you think it would help if we described this strategy in the
> draft? Do you have some other potential solutions in mind?
> 
>> more inline...
>> 
>> Regards Joscha
>> 
>> Am 14.02.2013 19:59, schrieb Marc Petit-Huguenin:
> I did a review of this draft, and I have some concerns.
> 
> First of all some parts of the I-D are verbatim copy of the text in the
> original paper.  Is that OK?
>>> [Jouni]: I guess the main reason for that is that ReDiR is pretty
>>> complex to describe. So we took a safe bet and tried to reuse some of
>>> the text (the algorithm description) from the paper. But since there
>>> are also comments that the text is difficult to follow, I'll make an
>>> attempt to reformulate it in the next version of the draft.
>>> 
> Probably because some of the text comes from a research paper, it was very
> difficult to understand fro me, and I am not sure that I yet understood
> everything - I still have to write an implementation of this, and
> unfortunately to not have enough time to do so before the end of the WGLC.
> On the other hand, I know that RELOAD.NET has an implementation, so I guess
> it is implementable.
>>> [Jouni]: I have also implemented the draft and think I got the
>>> implementation right. So if you have any further questions about things
>>> that are unclear, let me know and I can check the code to see how that
>>> specific thing was implemented (and clarify the same issue in the draft
>>> if necessary).
>>> 
> But I was not able to make sense of something in the example in section 7: 
> Why is the 4th peer added to level 0? Bullet 4 in Section 4.3 says "Node N
> MUST continue [repeating steps 2 and 3] until it reaches either the root or
> a level a which n.id is not the lowest or highest Node-ID in the interval
> I(level, n.id)".  In this case 4 is not the lowest or highest Node-ID in
> the interval (lowest is 2, highest is 7), so why is it added to this node?
>>> I think the example is simply following the rules. At level 1 peer 4 is
>>> the lowest. So go up and fetch and store.
>>> 
>>> [Jouni]: That's correct. Node 4 starts from the starting level, which
>>> is level 2. It stores its record on level 2. Since Node-ID 4 is the
>>> lowest (only) Node-ID in its interval, the upward walk continues to
>>> level 1. At level 1, Node-ID 4 is also the lowest Node-ID in its
>>> interval and thus the upward walk continues all the way to the root
>>> level. Node 4 stores its record in that level. Since Node-ID is neither
>>> the lowest nor highest Node-ID, the upward walk stops at level 0
>>> (although it would stop anyway at level 0 since it is of course not
>>> possible to go further up in the tree).
>>> 
> But if i reveal correct that fact caused a few headaches for me too. Why
> does the store does not depend on the information that was fetched before?
>>> [Jouni]: That is how it goes - if there has been a decision that the
>>> upward walk shall continue to the next level, a record is stored at
>>> that level 'automatically', regardless of the contents of the tree
>>> node. The contents of the tree node (i.e., whether n.id is sandwiched
>>> or not) will influence the decision on whether to stop the upward walk
>>> or continue it. The idea in the upward and downward walks is to ensure
>>> that the tree is populated densely enough so that service lookups will
>>> finish without requiring too many Fetch operations.
>> But does this make sense? If I recall correct the registration
>> information of node 3 and 4 in Level 0 in the draft example will never be
>> used in lookup processes. As far as I understood at most two service
>> provider entries are needed (lowest and highest) in each tree node to
>> make the algorithm work. All sandwiched service provider information is
>> not needed. Most of them will also expire and not be renewed in the
>> re-registration process in case other service providers have registered
>> in the meantime. I think this 'automatic' store process makes the tree
>> just a bit more wired and the algorithm mode difficult to understand. Or
>> do you see a resonable reason for this behaviour that I don't see.
> BTW a similar example for the service lookup would be useful.
>>> [Jouni]: Ok, I'll add an example in the next version of the draft.
>>> 
> More comments:
> 
> - Section 3, 3 paragraph: "contains a list of Node-IDs"
> 
> Technically each node is a Dictionary whose keys are Node-IDs and values
> contain a list of Destinations.
>>> [Jouni]: Ok, I'll modify this in the next version of the draft.
>>> 
> - Section 4.1
> 
> s/detination_list/destination_list/
>>> [Jouni]: Ok, will change this one also in the next version of the
>>> draft.
>>> 
> - Section 4.1
> 
> namespace is an opaque value but the charset and conversion between 
> character string and byte string for the namespace is not defined.
>>> confirm
>>> 
>>> [Jouni]: Would specifying that it is an opaque UTF-8 encoded string be
>>> enough?
>>> 
> - Section 8
> 
> The document says that the redir namespace is added to the 
> <mandatory-extension> element, meaning that all nodes MUST understand 
> ReDIR, but isn't that against one of the goal of ReDIR, which is that by
> using standard Store/Fetch, only a node wishing to store or fetch has to
> implement ReDIR?
>>> I think at least the RedirServiceProvider Data Structure must be
>>> supported. And also the Access Control Rules. But the algorithm might
>>> not be mandatory  needed.
>>> 
>>> The RedirServiceProvider Data Structure does not need to be understood
>>> by the peer storing it, but you are right about the Access Control
>>> rule.  My own draft about storing the Access Control rule solves this
>>> problem but, even if it is accepted as WG item, we do not want to add a
>>> normative reference to it.
>>> 
>>> So I withdraw what I said - redir needs to be a a mandatory extension
>>> at least until new access control policies no longer have to be
>>> hardcoded.
>>> 
>>> [Jouni]: Ok, so if I understood correctly, it is ok to leave the text
>>> as it is.
>>> 
> - Section 10.3
> 
> I think that we need a bit more explanation on what the turn-server and
> voice-mail service providers are.
>>> [Jouni]: I could remove the voice-mail service provider from the next
>>> version of the draft as I don't have a good explanation for that. For
>>> turn-server I will add some text.
>>> 
> On 01/31/2013 03:11 PM, Carlos Jesús Bernardos Cano wrote:
>>>>> Hi,
>>>>> 
>>>>> Hereby we are issuing a WGLC for
>>>>> draft-ietf-p2psip-service-discovery-06.
>>>>> 
>>>>> The WGLC will be open till the 15th of February. We kindly ask the
>>>>>  WG to review the document and provide comments.
>>>>> 
>>>>> If you have no comments and think the document is ready to be 
>>>>> submitted to IESG, please do send a note stating that to the WG
>>>>> ML.
>>>>> 
>>>>> Additional information about the document is below:
>>>>> 
>>>>> Title           : Service Discovery Usage for REsource LOcation
>>>>> And Discovery (RELOAD) Author(s)       : Jouni Maenpaa Gonzalo
>>>>> Camarillo Filename        :
>>>>> draft-ietf-p2psip-service-discovery-06.txt Pages : 15 Date
>>>>> : 2012-10-01
>>>>> 
>>>>> Abstract: REsource LOcation and Discovery (RELOAD) does not define
>>>>> a generic service discovery mechanism as part of the base
>>>>> protocol. This document defines how the Recursive Distributed
>>>>> Rendezvous (ReDiR) service discovery mechanism used in OpenDHT can
>>>>> be applied to RELOAD overlays to provide a generic service
>>>>> discovery mechanism.
>>>>> 
>>>>> 
>>>>> The IETF datatracker status page for this draft is: 
>>>>> https://datatracker.ietf.org/doc/draft-ietf-p2psip-service-discovery
>>>>>
>>>>>
>>>>> 
There's also a htmlized version available at:
>>>>> http://tools.ietf.org/html/draft-ietf-p2psip-service-discovery-06
>>>>> 
>>>>> 
>>> _______________________________________________ P2PSIP mailing list 
>>> P2PSIP@ietf.org https://www.ietf.org/mailman/listinfo/p2psip
>> _______________________________________________ P2PSIP mailing list 
>> P2PSIP@ietf.org https://www.ietf.org/mailman/listinfo/p2psip
> 
> _______________________________________________ P2PSIP mailing list 
> P2PSIP@ietf.org https://www.ietf.org/mailman/listinfo/p2psip 
> _______________________________________________ P2PSIP mailing list 
> P2PSIP@ietf.org https://www.ietf.org/mailman/listinfo/p2psip
> 

- -- 
Marc Petit-Huguenin
Email: marc@petit-huguenin.org
Blog: http://blog.marc.petit-huguenin.org
Profile: http://www.linkedin.com/in/petithug
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)

iQIcBAEBCAAGBQJRLRPDAAoJECnERZXWan7ESQAQAKp49csNIYytMJ9NdACdQBTW
S6MXxhymlmDWOjsj6OjYUKb1NOFbT5pbs4sM5eJ22v+DyTWOoQ/YWu+hnShPL9zV
pfOgn66TzL2KsAI0xkKB7QhyYIUmH9ODrf3NPcs8u3FUw4exXGInh9Y96hq0pMfD
KeH/UTVOQ4W2O860xpogWaoGOJ89fhqRT9B4HD36uw97MD/hh5KbZ9i7/RhxhtKa
G0ayNXzyxziql3LRMBe8ty31+/T4/L6JK9TJVLrK1xnEg2yRmQslbFgVeNQhd3U6
uEIPKuDJRP04IKQ3OwLTvmteg3q16GJLMDsTFcD6C0i02701BNwP5WI2XuFXQBEp
JoPtFnAvLS8KrdjgpIO4cXXYfTbjcskRh9261M58iv7o9WGQEefsk/rvp4oVY+xd
Cb+j6uN4dI3DDU7oiYd6yyCNnHrLqgEXZ/PtkhgBhvGmvE50/bHmGbPZjRmYr8JC
8CyUbsmDx66N9BPt9MBH0zQtI+RtWhIzdFYgYSFeyywWrVfAAuXxcuhOPpqq1R3J
pec45/i8XM4nIwL9HudFnNDpL+LU7CWkR08JTpjJb3ObPE5PlKF7hyXe0Q74MSJl
a5skclkWEqoqqjIIz76Cua87B0MlE2sOW6wDfeB9sIlDt1hgaDQyX9pkQrUwbvJ8
TUSqWkHed1zr3ImnQxu3
=Q3Od
-----END PGP SIGNATURE-----