Arnt Gulbrandsen wrote:
Ted Faber writes:
If an application needs a heartbeat, it almost always needs to be an
application to application (layer 7 to layer 7) heartbeat.
My point is that if you need that layer 7 heartbeat, the layer 4 (TCP)
one doesn't help much. I can't think of an application that needs the
TCP heartbeat and not the application heartbeat.
I can think of several whose L7 heartbeat needs TCP data in order to
avoid false alarms.
It's really difficult to write an L7 heartbeat which works well with
fast connections (ie. detects death soon after it occurs), also works
with slow connections (ie. makes few false alarms), and makes no use of
It's even more complex IMO. The L7 heartbeat is to detect application
It's either implemented is a dedicated heartbeating thread in witch case
it says nothing about whether the real worker thread is hung up.
Or there's some kind of general-purpose hang-up diagnostic algorithm in
your application. Which is more or less impossible to implement (a
problem unsolvable by Turning machine).
Thus the L4 heartbeats (detecting no response from the peer's TCP stack)
are the only ones we are left with.
Ietf mailing list