Re: [Anima-signaling] GRASP issue 51: Flooded objectives

Brian E Carpenter <brian.e.carpenter@gmail.com> Fri, 05 August 2016 03:24 UTC

Return-Path: <brian.e.carpenter@gmail.com>
X-Original-To: anima-signaling@ietfa.amsl.com
Delivered-To: anima-signaling@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 0A9CC12D18C for <anima-signaling@ietfa.amsl.com>; Thu, 4 Aug 2016 20:24:41 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.7
X-Spam-Level:
X-Spam-Status: No, score=-2.7 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id kQzucuvOp1No for <anima-signaling@ietfa.amsl.com>; Thu, 4 Aug 2016 20:24:38 -0700 (PDT)
Received: from mail-pf0-x22f.google.com (mail-pf0-x22f.google.com [IPv6:2607:f8b0:400e:c00::22f]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 92A8B12D113 for <anima-signaling@ietf.org>; Thu, 4 Aug 2016 20:24:38 -0700 (PDT)
Received: by mail-pf0-x22f.google.com with SMTP id y134so92690708pfg.0 for <anima-signaling@ietf.org>; Thu, 04 Aug 2016 20:24:38 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=subject:to:references:cc:from:organization:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=DqB9x0rFBXjcg+w836qm3CmGjgVCme6LCpkpVNPskDE=; b=iQ2R6HvYOBqDTcL7Nq41xHViqfznZcmF+zwQCMLsdRMXGwRlLeVn31SWfL7uOE7Biq QvgGmH0vTPogDkuiiYxR0vZ6c+srSQR7z6AbzIBL6CffsJz4OeiExJHpM/S70quIU/Xx 8pvAKK8t69BmQh10inqHW/JKj4I9dmNzhoPKC1HSAYWwVI76tycw+K+GJBdTETG16nrB ZFrj5t8/uA6ghkFIquaaN7Oq0si+2B56lrUR55ywrqxtAe0bW+TLuB6PiC857JT7swE0 ce11oo8d7FC8Tb5fe+AFARjWf/32znQ2cWOmyWKnklNCcLXddx/62XuucpIOl8CpQ0MY g26g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:subject:to:references:cc:from:organization :message-id:date:user-agent:mime-version:in-reply-to :content-transfer-encoding; bh=DqB9x0rFBXjcg+w836qm3CmGjgVCme6LCpkpVNPskDE=; b=lGEZP+vg5uGnLWGP8DQpuSpJvR97Zxv8jEmLn+/4swPqSFGBauGuuA8RuyBRRqv6ei ERLL50PfKhjAmNIoNHMubgVJecmi5Y6nB+Iy0l7WZFi8Ukq0yJ1cFgleXZdC6sc8emMM e3AIx53W/qb9nifUh6PaiL2vnJBdovRcv2M+3hcuiXsjYbs3nTFZxvKFSZD03xiEwQzW 2nUHtlGCbBb+wLNDbVc5yJhUwz9ax09rDvVm92jJUFQYL87bG19WYDbxDrGpiuF7p48O r9HVhi2uoEwKTS6XevO78peJ4ydW831AVEsC0wGqZCxE8/XfAjlQmjieFy5oOL6pwebg O8dA==
X-Gm-Message-State: AEkoousZtEzUSa4adKfmH2O2Du1nce0t6PNosCRlHOzRiD8EE/6k6ThoAg86fyP/MGQNxQ==
X-Received: by 10.98.89.23 with SMTP id n23mr131870697pfb.34.1470367477831; Thu, 04 Aug 2016 20:24:37 -0700 (PDT)
Received: from [192.168.178.23] ([118.148.115.108]) by smtp.gmail.com with ESMTPSA id p64sm23493331pfd.11.2016.08.04.20.24.34 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 04 Aug 2016 20:24:36 -0700 (PDT)
To: Toerless Eckert <eckert@cisco.com>
References: <47c158b3-92f4-8a36-1bc1-c5c19afdc6b3@gmail.com> <20160801085529.GT21039@cisco.com>
From: Brian E Carpenter <brian.e.carpenter@gmail.com>
Organization: University of Auckland
Message-ID: <97815aec-a36f-8dda-6798-eb0c1c5eda17@gmail.com>
Date: Fri, 5 Aug 2016 15:24:43 +1200
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0
MIME-Version: 1.0
In-Reply-To: <20160801085529.GT21039@cisco.com>
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
Archived-At: <https://mailarchive.ietf.org/arch/msg/anima-signaling/GKZaKX8c8qahK_0gxMGXpYSmSpU>
Cc: Anima signaling DT <anima-signaling@ietf.org>
Subject: Re: [Anima-signaling] GRASP issue 51: Flooded objectives
X-BeenThere: anima-signaling@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: Mailing list for the signaling design team of the ANIMA WG <anima-signaling.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/anima-signaling>, <mailto:anima-signaling-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/anima-signaling/>
List-Post: <mailto:anima-signaling@ietf.org>
List-Help: <mailto:anima-signaling-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/anima-signaling>, <mailto:anima-signaling-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 05 Aug 2016 03:24:41 -0000

So, here is where my head is now on flooding.

1. We specify that the source address is cached with the flooded objective, and that
multiple copies are kept if there are multiple sources.
2. To cover the common case, if a regular ASA calls synchronize(obj) it will
by default get back the first entry in the flood cache, and if there is nothing
in the flood cache, GRASP will discover and synchronize the objective.
3. To cover the case where we want multiple flooded values, we'll add a function
to the API called something like get_flood(obj) which will return a list
of versions of the objective, each tagged with its source address.

Text? I have put some words into my working version of the GRASP spec.
I will push the latest XML to GitHub shortly.

Running code? Yes, I've coded all that in my prototype and tested all the code
paths. (I don't intend to publish that code until we get a -07 draft out.)

In terms of freshness, here's some text:

   If the value of an objective has time-sensitive properties such as a
   defined lifetime, a defined expiry time, or a defined refresh rate,
   these SHOULD be expressed as part of the definition of the objective
   itself; they are not foreseen in the GRASP protocol.  For example, an
   objective that is flooded using Flood Synchronization might include a
   parameter specifying its expiry time as a UTC string.

Regards
   Brian

On 01/08/2016 20:55, Toerless Eckert wrote:
> Inline.
> 
> On Mon, Aug 01, 2016 at 08:47:22AM +1200, Brian E Carpenter wrote:
>> Hi,
>>
>> Prior to raising this on the WG list, I'd like feedback from the design team.
>>
>> Following side discussion with the bootstrap and ACP teams in Berlin, there
>> is a new issue about flooded objectives (not really about the Flood message
>> itself). It has two aspects:
>>
>> 51.1 Should flooded objectives have a time-to-live before they are deleted from
>> the flood cache? I think the answer is no, because in any case the source can repeat
>> the Flood message if the value changes. If anybody sees a use case for a TTL,
>> please explain it.
> 
> We discussed in Berlin methods to discover sources that went away:
> 
> a) IMHO, we do not want to send rapid updates from sources to discover quickly when
>    they die because of the absence of those announcements. (aka: no fast aliveness).
> b) IMHO we do not want to work out the details of the GRASP infra quickly detecting
>    when a sources goes away and flood that information (no IGP like fast source revocation).
> c) I suggestested that GRASP clients could help:
>    - GRASP thinks source is alive (long or no TTL)
>    - GRASP API client tries to connect to objective, and fails
>    - GRASP API client tells GRASP "objective seems dead".
>    - GRASP removes objective source from cache
>    - When GRASP receives another flood message from objective source,
>      it repopulates cache and tells client.
> 
> With c) in mind, we might not need a TTL, but I am not aware of existing service
> announcement mechanisms that tried to rely on this "c)" approach, so i am a bit
> weary to solely rely on it:
> 
> When there is a network disconnect between objective and client, the client would not
> be able to reach the objective and the objective would be declared dead. Aka: If we
> do "c)", we do need to periodically flood from the objective source the announcement
> to recover from this situation. The periodicity should be determined by the source
> itself. But it would be good if the source also announced this periodicity.
> 
> Aka: I would suggest that intead of TTL, the source could simply announce the periodicity
> of it's announcements (in seconds). Default 30 seconds.
> 
> If a client does not perform "c)", then it can use the periodicity value to
> calculate when it can declare the source dead - eg: after three periods non-receipt
> of a message.
> 
> There is also a fundamental limitation with "c)", and that is when the announcer
> is not tightly coupled with GRASP:
>    - GRASP could announce the objective, but the process providing the objective
>      could be running on a different system and could have died. Or maybe this is
>      even possible on the same system.
>    - Client connecting to the objective  would declare it dead to GRASP, but
>      GRASP would continue to see announcement from the source.
> 
> Ideally, we would not have this case, aka: GRASP API should always know when
> the actual source of the objective is really alive. But i am not sure if it's possible
> to always guarantee this. So it would be good to have in the flooded objective
> some indiciation that the GRASP announcement is not coupled to the objective aliveness
> itself.
> 
> I am extrapolating this case from what we do with mDNS: Most services today do
> not couple to mDNS via API. Instead when we use something like Avahi, then there
> are Avahi config-files that describe the services running on the same system (or
> on another system). Which of course does not guarantee that each of those services
> is actually working fine. So i't seasy to announce services when they do have
> problems (eg: can't start, fail, ...).
> 
> Aka: objective parameter "GraspObjectiveCoupled" (or come up with a better name).
> If true, it means that the GraspSource and Objective Owner feel that it's safe
> to do c) on the client side to discover death of the service, and false means it is not.
> 
> 
>> 51.2 We do have a potential use case where more than one source floods the same
>> objective, and the recipient ASAs need to distinguish the results. That use case
>> is when there are multiple bootstrap proxies advertising on the same LAN, and the
>> joining nodes (pledges) can choose which one to try. I'm sure there will be others.
> 
> The most important one being multiple registrars announcing the registrar service,
> and the bootstrap proxies want to discover them, and then choose the best one based
> on network distance (aka: remaining loop count).
> 
>> My proposal is to specify that a node receiving a Flood message will cache
>> the received objective plus its source locator (which is already in the message
>> for other reasons). We'll also have to upgrade the API so that the recipient
>> ASA can get multiple flooded answers.
> 
> Yes.
> 
> Thanks!
>     Toerless
>>
>> Comments?
>>
>> Regards
>>    Brian
>>
>> _______________________________________________
>> Anima-signaling mailing list
>> Anima-signaling@ietf.org
>> https://www.ietf.org/mailman/listinfo/anima-signaling
>