[libvirt] [PATCH v2 01/12] Define keepalive protocol

Daniel P. Berrange berrange at redhat.com
Thu Sep 29 13:19:43 UTC 2011

On Fri, Sep 23, 2011 at 10:24:46AM +0200, Jiri Denemark wrote:
> The keepalive program has three procedures: ADVERTISE, PING, and PONG.
> All are used only in asynchronous messages and the sender doesn't wait
> for any reply. However, the party which receives PING messages is
> supposed to react by sending PONG message the other party, but no
> explicit binding between PING and PONG messages is made. ADVERTISE is
> sent by a client to indicate it supports keepalive protocol. Server is
> not allowed to send any keepalive message until it sees ADVERTISE.

I guess I'm not entirely understanding what the point of the
ADVERTISE message here is?

IIUC, the flow of messages you are describing will end up as:

 1. C -> S  remote_supports_feature_args (KEEPALIVE)
 2. S -> C  remote_supports_feature_ret  (TRUE|FALSE)
 3. C -> S  keepalive ADVERTISE
 4. C -> S  keepalive PING
 5. S -> C  keepalive PONG
 6. C -> S  keepalive PING
 7. S -> C  keepalive PONG
 n. C -> S  keepalive PING
 n+1. S -> C  keepalive PONG

We need to the remote_supports_feature method to determine if the
keepalive protocol is supported, what purpose is the ADVERTISE
message serving ?

|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|

More information about the libvir-list mailing list