[comp.dcom.sys.cisco] KeepAlives and half duplex failures

jerry@OLIVEY.ATC.OLIVETTI.COM (Jerry Aguirre) (04/10/90)

Let me preface this by stating that this is a request for information
and I don't know this to be a problem but....

It seems to me that keepalives do exactly the wrong thing when one half
of a line fails.  Given that most lines are full duplex it is quite
reasonable for one direction to fail while the other continues to
operate.

Assume that the line from A to B is working but the reverse direction
has a problem.  B will continue to receive keepalives and, worse,
routing information from A.  But when it tries to use that line to B the
packet gets dropped on the floor.  Meanwhile A has a potentially good
path to B but won't use it for lack of keepalives and routing updates.

I think I observed this happening while debugging a line.  Is this how
it really works or are keepalives smarter than that?  Does the keepalive
packet contain information about whether the sender has been receiving
keepalives on that line?

					Jerry Aguirre

hampton@cisco.com (David Hampton) (04/10/90)

>> Assume that the line from A to B is working but the reverse direction
>> has a problem.  B will continue to receive keepalives and, worse,
>> routing information from A.  But when it tries to use that line to B the
>> packet gets dropped on the floor.  Meanwhile A has a potentially good
>> path to B but won't use it for lack of keepalives and routing updates.

cisco's serial keepalives measure the full serial link.  Keepalives
contain a sending sequence number, and the last sequence number
received from the other end of the link.  (e.g. mine's 5, I last saw
23 from you.)  This lets a router see if his transmit wire is broken,
as well as testing for a broken receive wire.  If the number last sent
from a router, and the number echoed from the far end are ever out of
sync by more than two, then the serial line is declared down.

In your scenario, B will continue to hear keepalives from A with A's
sequence number changing.  These packets also contain the last
sequence number that A heard from B before the line died.  Router B,
upon seeing that his echoed sequence number is out of date, will
declare the serial line down.  A will also declare the line down for
lack of any keepalives at all.

David Hampton
cisco Release Group

hedrick@cs.rutgers.edu (04/10/90)

keepalives on a serial line exchange serial numbers in both
directions.  That is, both ends send a number and echo back what they
see from the other end.  Protocol up means that the copy of the serial
number echoed back from the other end is up to date.  So it has to
mean that both ends are sending and receiving keepalives correctly.
We do in fact see keepalive failing at the same time on both ends.
I suppose keepalive is enabled on both ends with the same time
constant?

hedrick@cs.rutgers.edu (04/10/90)

To see exactly how keepalives work, try "debug serial".  This will
show the serial numbers going both ways.