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.