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

Toerless Eckert <eckert@cisco.com> Mon, 08 August 2016 14:03 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 2CE1312D838 for <anima-signaling@ietfa.amsl.com>; Mon, 8 Aug 2016 07:03:50 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -15.768
X-Spam-Level:
X-Spam-Status: No, score=-15.768 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.247, 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 4lmlQBeq5-bV for <anima-signaling@ietfa.amsl.com>; Mon, 8 Aug 2016 07:03:48 -0700 (PDT)
Received: from alln-iport-8.cisco.com (alln-iport-8.cisco.com [173.37.142.95]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 73273126D74 for <anima-signaling@ietf.org>; Mon, 8 Aug 2016 07:03:48 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=4347; q=dns/txt; s=iport; t=1470665028; x=1471874628; h=date:from:to:cc:subject:message-id:references: mime-version:in-reply-to; bh=lkY8RegC1H0rBKso57TDQiKf3SvYPO3zu/fYg8sYzMw=; b=fuwKOdQKv6AlaYl3oEsyx76udcDS/h0TRUJ4Q9kOfccPLnXgGKCkbr9p //eiqTSYdHvtLa7aGRBAjybNTzHdWUsD7VAIhzLQZ9UozruNVT1Ee34hH tD4PQE5P560PDK/4+9WiZ3X6+le3MdQGjy4ohdy/YZy0oV/ZIlBzXBS56 g=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0ARAgDykKhX/5RdJa1dg0WBUrcEgg+Bf?= =?us-ascii?q?YYdAoE6OBQBAQEBAQEBXSeEXgEBBAE6PwULCxgJJQ8FSROIKQjCMQEBAQEBAQE?= =?us-ascii?q?BAQEBAQEBAQEBAQEBARyKd4Qqg0KCLwWPDYQ/hW2PAAqPQ4w0g3geNoIPH4FsH?= =?us-ascii?q?DKHXwEBAQ?=
X-IronPort-AV: E=Sophos;i="5.28,490,1464652800"; d="scan'208";a="308093265"
Received: from rcdn-core-12.cisco.com ([173.37.93.148]) by alln-iport-8.cisco.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 08 Aug 2016 14:03:27 +0000
Received: from mcast-linux1.cisco.com (mcast-linux1.cisco.com [172.27.244.121]) by rcdn-core-12.cisco.com (8.14.5/8.14.5) with ESMTP id u78E3QJo018424 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 8 Aug 2016 14:03:27 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 u78E3QXi017009; Mon, 8 Aug 2016 07:03:26 -0700
Received: (from eckert@localhost) by mcast-linux1.cisco.com (8.13.8/8.13.8/Submit) id u78E3Q5N017008; Mon, 8 Aug 2016 07:03:26 -0700
Date: Mon, 8 Aug 2016 07:03:26 -0700
From: Toerless Eckert <eckert@cisco.com>
To: Brian E Carpenter <brian.e.carpenter@gmail.com>
Message-ID: <20160808140326.GA6295@cisco.com>
References: <47c158b3-92f4-8a36-1bc1-c5c19afdc6b3@gmail.com> <20160801085529.GT21039@cisco.com> <97815aec-a36f-8dda-6798-eb0c1c5eda17@gmail.com> <20160805083457.GH21039@cisco.com> <f541b926-cde7-db52-a0fa-226761d0c3c8@gmail.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <f541b926-cde7-db52-a0fa-226761d0c3c8@gmail.com>
User-Agent: Mutt/1.4.2.2i
Archived-At: <https://mailarchive.ietf.org/arch/msg/anima-signaling/PPzTixh59p__Gvb8PHQcrS2zwrk>
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, 08 Aug 2016 14:03:50 -0000

Inline

On Sat, Aug 06, 2016 at 02:39:35PM +1200, Brian E Carpenter wrote:
> Hi Toerless, just drilling down on two points (I have not ignored the rest,
> but these condition other aspects):
> 
> On 05/08/2016 20:34, Toerless Eckert wrote:
> 
> ...
> >> 1. We specify that the source address is cached with the flooded objective, and that
> >> multiple copies are kept if there are multiple sources.
> > 
> > Yes, but "source" really must be the ASA transport address, aka: 
> >    source = {ACP-ULA-IPv6-address, proto=TCP, ASA-GRASP-TCP-port}
> 
> Here I have a little problem. Unless you plan to use GRASP messages for
> the entire process, it isn't GRASP's business what protocol and dynamic
> port are to be used.

I do not parse that sentence. Can you rephrase ?

> So I think the protocol and the port need to be
> fields in the flooded objective itself, not derived automatically by
> GRASP. Does that make sense?

We need to be able to distinguish in the caches announcements for the same
objective from two different ASA on the same autonomic node. Therefore the
"source" needs to have another distinguisher beside the IPv6 address of the
autonomic node. This is not an issue that the individual ASA can solve becaue
the cache is kept by GRASP.

The distinguisher can be any ID, but i proposed to use the ASA's TCP port number
through which it runs GRASP becaude this ID does already exist and is unique.
So no new ID-allocation code to write.

This TCP port number will NOT be used to construct the transport port of any
service connection!

Example:

    Registrar ASA objective announcement:
        source = { ACP-ULA-IPv6-address, proto=TCP, Registrar-GRASP-TCP-Port }
        ....
        Payload:
        EST-adress: { proto=TCP, port=<Registrar-EST-port> }

Registrar ASA starts, it gets a TCP port for its GRASP unicast messages
GRASP puts that <Registrar-GRASP-TCP-Port> into the source of all Objectives from this ASA.

Then the Registrar ASA opens a TCP server port for the EST protocol. Then it
announces the objective.

The Bootstrap-Proxy constructs the transport address of the EST connection
by combining the TCP port from the payload EST-address with the IPv6 address
of the source. The TCP port of the source is only used to send/receive GRASP
messages from/to that ASA - which happens by the GRASP library. 

And of course, this could be a TCP or UDP port number. I personally think TCP
is easier even if there is more overhead because i don't need to bother about
fragmentation (for GRASP).

> ...
> > 
> > If the announcer of a flood sync announce dies, how would its cache entries
> > ever be deleted ? On nodes that have an ASA interested in the objective,
> > the ASA can look at expiry time and tell GRASP to expire the entries. But
> > how about nodes without such ASA ?
> 
> Is it a problem? The useless flooded objective would sit there until the
> cache overflows and it gets deleted by the LRU algorithm.

Normally, U) means "used", and i think we can not do this:
Check my algorithm for a bootstrap proxy finding the best registrar. It will retrieve
from GRASP all those registrar cache entries, so you can't figure out which one
it "Uses" without additional API. The only thing the currently planned APIs
would give you is an indication when the client ASA tries to use an objective
and it's broken. But it will try only what it thinks are the best. Not the others,
so they won't get good LRU treatment.

We need to have a fairly high frequency of periodic flood-sync messages anyhow.
Else a newly rebooted device will not learn them well. Or we need to make
the protocol more complex by generating additional triggered flood syncs for newly
booted devices. Aka: one flood sync every 30 seconds . Then it makes a lot of sense
to also time them out.

> > Aka: expiry_time looks to me like a logical GRASP header parameter so that
> > we can GRASP without ASA expire flood sync cache entries.
> 
> We can do that. It's a choice: extra bytes in every flood message versus
> no default expiry mechanism, just LRU cache expiry.

I'll vote for extra bytes.

Cheers
    Toerless

> I'll review all your points after we clear these ones up.
> 
> Thanks
>     Brian

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