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

Toerless Eckert <eckert@cisco.com> Mon, 01 August 2016 08:55 UTC

Return-Path: <eckert@cisco.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 4412C12D5A4 for <anima-signaling@ietfa.amsl.com>; Mon, 1 Aug 2016 01:55:33 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -15.808
X-Spam-Level:
X-Spam-Status: No, score=-15.808 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-1.287, SPF_PASS=-0.001, USER_IN_DEF_DKIM_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=cisco.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 YrmkJhOLI9ca for <anima-signaling@ietfa.amsl.com>; Mon, 1 Aug 2016 01:55:31 -0700 (PDT)
Received: from rcdn-iport-6.cisco.com (rcdn-iport-6.cisco.com [173.37.86.77]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 84F3312D590 for <anima-signaling@ietf.org>; Mon, 1 Aug 2016 01:55:31 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=5058; q=dns/txt; s=iport; t=1470041731; x=1471251331; h=date:from:to:cc:subject:message-id:references: mime-version:in-reply-to; bh=YoExZZYWM7RACxYryEPuyeGbxd98BGnkjwVyE9kMWh4=; b=lvBTFuiYq3eDo6n5T/yD+niGg89Jh4KU0XU+BcDs+R4ya+3ZWnbFSiBy yccUpi4kBUBlY1CmKUI10N4jFVSEULvvuZr7YxprteCliC10i8s0hfyxK 9fscJ3PhAxYV+hdbuGEyb97qt+xY5y3ezvowHCew/vbReJV2okyxhgYV3 o=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0D7AgAIDp9X/4MNJK1dg0VWfLkRgX0kh?= =?us-ascii?q?XkCgSo4FAEBAQEBAQFdJ4ReAQEEAQEBODQLBQsLGAklDwUTNhOIKQgOwGYBAQE?= =?us-ascii?q?BAQEBAQEBAQEBAQEBAQEBAQEXBYl0gQOKGwWOFnWEPCmFQ451CoFrhFqIeowwg?= =?us-ascii?q?3ceNoQaHDKIUQEBAQ?=
X-IronPort-AV: E=Sophos;i="5.28,454,1464652800"; d="scan'208";a="132558994"
Received: from alln-core-1.cisco.com ([173.36.13.131]) by rcdn-iport-6.cisco.com with ESMTP/TLS/DHE-RSA-AES256-SHA; 01 Aug 2016 08:55:30 +0000
Received: from mcast-linux1.cisco.com (mcast-linux1.cisco.com [172.27.244.121]) by alln-core-1.cisco.com (8.14.5/8.14.5) with ESMTP id u718tUoh022624 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 1 Aug 2016 08:55:30 GMT
Received: from mcast-linux1.cisco.com (localhost.cisco.com [127.0.0.1]) by mcast-linux1.cisco.com (8.13.8/8.13.8) with ESMTP id u718tTC3031827; Mon, 1 Aug 2016 01:55:29 -0700
Received: (from eckert@localhost) by mcast-linux1.cisco.com (8.13.8/8.13.8/Submit) id u718tTrv031826; Mon, 1 Aug 2016 01:55:29 -0700
Date: Mon, 1 Aug 2016 01:55:29 -0700
From: Toerless Eckert <eckert@cisco.com>
To: Brian E Carpenter <brian.e.carpenter@gmail.com>
Message-ID: <20160801085529.GT21039@cisco.com>
References: <47c158b3-92f4-8a36-1bc1-c5c19afdc6b3@gmail.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <47c158b3-92f4-8a36-1bc1-c5c19afdc6b3@gmail.com>
User-Agent: Mutt/1.4.2.2i
Archived-At: <https://mailarchive.ietf.org/arch/msg/anima-signaling/IncaUO17sJvTxjVIf2HG5gV1lnI>
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: Mon, 01 Aug 2016 08:55:33 -0000

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

-- 
---
Toerless Eckert, eckert@cisco.com