Re: [icnrg] comments on Reflexive Forwarding draft
"David R. Oran" <daveoran@orandom.net> Wed, 08 April 2020 13:48 UTC
Return-Path: <daveoran@orandom.net>
X-Original-To: icnrg@ietfa.amsl.com
Delivered-To: icnrg@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id C25963A0C4E for <icnrg@ietfa.amsl.com>; Wed, 8 Apr 2020 06:48:18 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.898
X-Spam-Level:
X-Spam-Status: No, score=-1.898 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
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 xRQ9KRDVLHBn for <icnrg@ietfa.amsl.com>; Wed, 8 Apr 2020 06:48:15 -0700 (PDT)
Received: from spark.crystalorb.net (spark.crystalorb.net [IPv6:2607:fca8:1530::c]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 176863A0DF2 for <icnrg@irtf.org>; Wed, 8 Apr 2020 06:47:56 -0700 (PDT)
Received: from [192.168.15.102] ([IPv6:2601:184:407f:80ce:95bd:8297:1ee1:a4]) (authenticated bits=0) by spark.crystalorb.net (8.14.4/8.14.4/Debian-4+deb7u1) with ESMTP id 038DlmL6013808 (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256 verify=NO); Wed, 8 Apr 2020 06:47:50 -0700
From: "David R. Oran" <daveoran@orandom.net>
To: Ken Calvert <calvert@netlab.uky.edu>
Cc: icnrg@irtf.org
Date: Wed, 08 Apr 2020 09:47:43 -0400
X-Mailer: MailMate (1.13.1r5680)
Message-ID: <11DAE974-C4B9-4733-A650-26C73BBBBA29@orandom.net>
In-Reply-To: <DB76BDBB-0BC6-4FF7-8496-882E07974DC1@netlab.uky.edu>
References: <mailman.100.1585854050.15246.icnrg@irtf.org> <DB76BDBB-0BC6-4FF7-8496-882E07974DC1@netlab.uky.edu>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=_MailMate_518195D4-D8E0-435B-A71A-CE49AAD22A64_="
Content-Transfer-Encoding: 8bit
Archived-At: <https://mailarchive.ietf.org/arch/msg/icnrg/NcJADnKaXgqNs7OAX-GA8FUds8E>
Subject: Re: [icnrg] comments on Reflexive Forwarding draft
X-BeenThere: icnrg@irtf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Information-Centric Networking research group discussion list <icnrg.irtf.org>
List-Unsubscribe: <https://www.irtf.org/mailman/options/icnrg>, <mailto:icnrg-request@irtf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/icnrg/>
List-Post: <mailto:icnrg@irtf.org>
List-Help: <mailto:icnrg-request@irtf.org?subject=help>
List-Subscribe: <https://www.irtf.org/mailman/listinfo/icnrg>, <mailto:icnrg-request@irtf.org?subject=subscribe>
X-List-Received-Date: Wed, 08 Apr 2020 13:48:19 -0000
These are super-useful comments - many thanks. Also looking forward to getting the typos/presentation comments so we can re-spin the draft. some thoughts below. On 7 Apr 2020, at 16:49, Ken Calvert wrote: > Dave and Dirk (and all) - > > Thanks for writing up the reflexive forwarding scheme! The draft > describes it clearly. (I have some minor presentation/typo comments > that I'll send separately.) > I like the approach of having a separate FIB for this purpose! >> Since this is a fairly major change/enhancement to the CCNx >> forwarding model, it really needs a close review to help us figure >> out: >> >> Are we crazy? > No more so than the rest of us, I think. :-) >> Is the complexity/functionality tradeoff appropriate? > I think that is the big question, and I'm still mulling it. See below > for some general comments. >> Did we miss anything, particularly any corner cases we should have >> considered > One thing I found myself wondering about is the definition of > "next/previous hop". All the diagrams and explanations seem to > implicitly assume it's a single node. What happens if a forwarder > broadcasts a regular interest and it is received (and forwarded on) by > multiple next hops? Is it worth mentioning that possibility so you can > say explicitly that it's fine (or not)? > The fact that you mention it indicates we probably ought to say more. I think we’re fine in terms of things working both correctly and not violating any principle of least astonishment. There are two sub-cases of multi-next hop behavior; regular multi-path (where the split traffic reconverges further upstream) and multi-destination (where it doesn’t and the Interest reaches multiple producers). For multi-path, since the Interests that converge upstream carry identical reflexive Interest name TLVs, they will get aggregated. Only one FIB entry will be created, pointing back to the previous hop(s) the Interest arrived on. The forwarder might, just as for any other Interest, decide to either do single or multi-path forwarding of that reflexive interest. If sent multi-path in parallel, these also will reconverge on the inverse path and get aggregated. For multi-destination, reflexive Interests might get issued by multiple producers, but they will carry the same reflexive name prefix and hence be forwarded over the reflexive FIB entries until reaching the join point, at which they will get aggregated and thus handled identically to any other Interest(s) subject to aggregation. We’ll craft some language like what’s written above and add it to the section on interest aggregation. > Along those lines, if a "next hop" is not identified with a specific > machine, it seems like anyone that can get a packet to the upstream > (toward the server) interface can blow away the reflexive FIB entry by > sending a bogus Data packet that matches the interest. But that is > also true for PIT entries, so maybe this problem has a known solution > (apologies for not knowing it). > On-path forwarders can do anything, including poisoning anything downstream. The only remedy in CCNx is to utilize content-hash restrictions and key restrictions that will bypass malicious forwarders if possible. I don’t think there’s anything new here. > My other comment is that the PIT entry lifetime-lengthening algorithm > seems pretty complicated. Why wouldn't it be sufficient to just put > it on the consumer to set the lifetime of the original interest to be > longer, and have forwarders admit a somewhat higher max lifetime for > interests that carry a reflexive name prefix? The application has to > know whether the server might request information from it, so that > seems cleaner, but I may be missing something. I get nervous about > per-packet state that can be renewed (see > https://dl.acm.org/doi/10.1145/964725.633051 > <https://dl.acm.org/doi/10.1145/964725.633051>). Gee, I remember that CCR paper! Very nice - predates the work on tiny packet programs too I think. You may very well be right that we picked the wrong tradeoff and the complexity and the additional hazard that has to be dealt with by consumers is not justified when the consumer can just inflate the original interest lifetime. Our concern was that consumers will have no motivation to even try to guess a good interest lifetime since they don’t know how many additional RTTs may be involved, and pick very large values, causing long recovery times on Interest loss. There’s a whole line of reasoning about these tradeoffs in the work my group did on timers for ICN back a few years ago. If the probability of **undetected** Interest loss is vanishing small (which it can be if you have robust hop-by-hop reliability mechanisms) then inflated interest lifetimes are not a big concern. However, we don’t have these mechanisms now for all link types, and for IP tunnels the loss probability can be pretty high. I’ve attached a copy of the presentation for refresh peoples’ memories. Bottom line is that we’d really like more feedback on whether the cure of having forwarders inflate the interest lifetime is worse than the disease of consumers guessing. >> Which of the alternative approaches to backward/forward compatibility >> we describe seems the right one? > It seems to me there are two aspects to consider and they are mostly > orthogonal: > > (i) Enable neighboring forwarders to know each others' capabilities so > they can construct and use routes that fully support reflexive > forwarding (if they exist). You posit two solutions to this, version > numbers and a (new, to be designed) capabiliites-exchange protocol. > I’d love to have a capabilities negotiation protocol. Any takers to define one (that really uses one-hop Interest-Data exchanges and not some push-mode hello protocol)? > (ii) What should happen when an interest encounters a "gap" in support > for reflexive forwarding? This can still happen, even with a solution > to (i), and it can happen in the middle of the network. > ISTM a solution to (i) would just (at best) shift who gets the "no > route" error. I’m not sure “No Route” is the right error in this case, but that’s a secondary consideration. > In that case the consumer can get it when an interest containing a > reflexive name reaches a forwarder that supports it, but which doesn't > know a compliant route to the producer. Right, perhaps no route is the right error, but this needs more thought. > In every other case the producer can still get "no route to > destination". Apologies if I am missing something. There are a few reasons why a producer might get no route on a reflexive interest: 1) The original Interest timed out 2) The network broke (possibly via a transient) 3) Forwarder bug I suspect all of these basically devolve to the producer wanting to just abandon what he was doing and try to do an Interest Return on the original Interest with an appropriate error (not sure which one to use - this case might just wind being a generic IE.AFU). >> Are there more use cases that we ought to document? We were hoping to >> have one or two to include for state synchronization, but have >> deferred that for now in the interest of getting the spec out for >> review. >> We’d like to talk about this at the ICNRG Interim meeting on April >> 20, so p[lease sets aside some time to read/eview/think about between >> now and then >> >> > > I look forward to the discussion! > > Ken DaveO
- Re: [icnrg] icnrg Digest, Vol 97, Issue 1 Ken Calvert
- Re: [icnrg] comments on Reflexive Forwarding draft David R. Oran
- Re: [icnrg] comments on Reflexive Forwarding draft Ken Calvert
- Re: [icnrg] comments on Reflexive Forwarding draft David R. Oran