Re: ACK of register and purge packets

Eric Gray <gray@ctron.com> Tue, 14 November 1995 23:39 UTC

Received: from ietf.nri.reston.va.us by IETF.CNRI.Reston.VA.US id aa25625; 14 Nov 95 18:39 EST
Received: from guelah.nexen.com by IETF.CNRI.Reston.VA.US id aa25621; 14 Nov 95 18:39 EST
Received: from maelstrom.nexen.com (maelstrom.nexen.com [204.249.99.5]) by guelah.nexen.com (8.6.12/8.6.12) with ESMTP id SAA07883; Tue, 14 Nov 1995 18:08:41 -0500
Received: (from root@localhost) by maelstrom.nexen.com (8.6.12/8.6.12) id SAA28496 for rolc-out; Tue, 14 Nov 1995 18:22:22 -0500
Received: from guelah.nexen.com (guelah.nexen.com [204.249.96.19]) by maelstrom.nexen.com (8.6.12/8.6.12) with ESMTP id SAA28487; Tue, 14 Nov 1995 18:22:20 -0500
Received: from gatekeeper.ctron.com (ctron.com [134.141.197.25]) by guelah.nexen.com (8.6.12/8.6.12) with ESMTP id SAA07879; Tue, 14 Nov 1995 18:07:12 -0500
Received: (from news@localhost) by gatekeeper.ctron.com (8.6.12/8.6.9) id SAA23477; Tue, 14 Nov 1995 18:17:16 -0500
Received: from stealth.ctron.com(134.141.5.107) by gatekeeper via smap (V1.3mjr) id sma023464; Tue Nov 14 18:16:28 1995
Received: from express.ctron.com by stealth.ctron.com (4.1/SMI-4.1) id AA00604; Tue, 14 Nov 95 18:19:38 EST
Received: from blarney (blarney.ctron.com [134.141.66.40]) by express.ctron.com (8.6.9/8.6.9) with SMTP id SAA09421; Tue, 14 Nov 1995 18:16:24 -0500
Message-Id: <30A9247D.7DE1@ctron.com>
Date: Tue, 14 Nov 1995 18:21:33 -0500
Sender: ietf-archive-request@IETF.CNRI.Reston.VA.US
From: Eric Gray <gray@ctron.com>
X-Mailer: Mozilla 2.0b1J (X11; I; IRIX 5.2 IP12)
Mime-Version: 1.0
To: shur@arch4.ho.att.com
Cc: luciani@nexen.com, bcole@cisco.com, rolc@nexen.com
Subject: Re: ACK of register and purge packets
References: <9511061359.AA12005@dahlia.ho.att.com>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
X-Orig-Sender: owner-rolc@nexen.com
Precedence: bulk
X-Info: Submissions to rolc@nexen.com
X-Info: [Un]Subscribe requests to rolc-request@nexen.com
X-Info: Archives for rolc via ftp://ietf.cnri.reston.va.us/ietf-mail-archive/rolc/

David,

> 
> Eric,
> 
> > >
> > > It seems to me that the purge can/will be used to remove cache entries that
> > > could cause routing loops (in router-router case), or an invalid path (in
> > > the host-router case), when routing outside the cloud changes. A reliable
> > > purge is very important for these cases. Therefore I recommmend keeping
> > > the Purge ack.
> > >
> > > David.
> >
> >       I think that you missed the point (maybe?); because of the scenario in
> > which a purge is not sent as a result of a component failure (crash), a
> > "reliable purge" is an unattainable goal.
> > This reduces the purge protocol to the status of "optimization" and it no longer
> > makes sense to require purge originators to repeat purge messages until they are
> > acknowledged.
> 
> This is a general argument that also applies to any other protocol that
> uses Ack/Retx. Your are not suggesting that if it is possible that a network
> componenet that has to wait for an acknowledgment ever goes down, then Acks/Retx
> as a protocol mechanism should never be used?
>

Hmmm...  Looks to me like a bear trap but, what the heck, guess I'll stick my foot in it
anyways.  Certainly there are scenerios where a steady stream of messages looking for an
acknowledgement can pose a significant threat to a component's ability to recover from a
trauma which - coincidentally - initially precipitated the need for the messages.

> 
> >As one member pointed out, that makes
> > the case where a component is being taken off-line much simpler to handle as it is
> > not necessary for the component to wait for acknowledgement before continuing the
> > power-down sequence (this could be critical for devices equiped with short-term
> > back-up power provided for the express purpose of allowing for a graceful power-
> > down). If it is not necessary to repeat purge messages until acknowledged, then an
> > acknowledgement becomes superfluous.
> 
> I disagree. Acks are useful to speed up convergence.

I disagree (as well). Purge protocol speeds up convergence; acknowledgements MAY help.

>                                                       In some cases an
> ACK does not make it (e.g., above scenario or a catastrophic failure),
> and the protocol needs to handle it.

Not the scenerio referred to; in some cases, the PURGE does not make it and the protocol
needs to handle it.  WHAT this means is that - regardless of how busy a router (or route
server) might be, it MUST 1) progress the aging of its cache entries and 2) observe the
expiry of same.  This is required because it is the only reliable mechanism available to
ensure that invalid entries are (eventually) removed. Consider that a route(-serve)r may
be consuming nearly all of its resources in activities related to forwarding traffic in
a loop.

>                                       However this does not make Acks
> superfluous.
>

If you send a purge to a system component, it will either process it or it will not.  If
it does, and it sends you an acknowledgement, then you should not repeat the purge.  If
it does and it doesn't send you an acknowledgement, then it will probably not send one
for any new purge(s) sent to it (so repeating the purge is pointless). If it does not
process the purge, then either it did not receive the purge or it is too busy to process
it in a timely way.  Considering the potential consequences of the change that made a
purge necessary, this latter case may be more likely than might otherwise be the case.  

You may argue that the component should never be too busy to handle purge protocol - but
remember, purge protocol is only an optimization.  Consequently, it may come after
forwarding related functions in component priorities (forwarding being the component's
main purpose in life).  This could be particularly true if the component is obliged to
acknowledge every purge it processes (even those that no longer apply) - as opposed to
simply scanning it for applicability.  A bogged down component might need to acknowledge
many purge messages before receiving the one that fixes the cause of its busy-ness.

Faced with this dilemma, an implemention may "decide" to postpone (i.e. temporarily
discontinue) acknowledging purges while it scans each one coming in looking for specific
applicability.  In this case, re-sending all of the unacknowledged purges contributes to
the problem rather than to its solution.

How do YOU spell superfluous?

> 
> David.


							Eric Gray