VNET servers are run on the Host and the Proxy. A VNET client can contact any server to query status or to instruct it to perform an action on its behalf. The basic protocol is text-based, making it readily scriptable, and bootstraps to binary mode when a Handler is established. Optionally, it can be encrypted for security. Figure 2 illustrates the interface that a VNET Server presents.
Session establishment and teardown: The establishment of session with a VNET server is initiated by a VNET client or another server using the HELLO command. The client authenticates by presenting a password or by using an SSL certificate. Session teardown is initiated by the VNET client using the DONE command.
Handler establishment and teardown:
After a VNET client has established a session with a VNET server, it
can ask the server to establish a Handler with another server. This is
accomplished using the HANDLE command. As shown in
Figure 2, the arguments to this command are the
parameters that define a Handler as described earlier. Here,
local_config
and remote_config
refer to the Handler
roles. In response to a HANDLE command, the server will establish a
session with the other server in the Handler pair, authenticating as
before. It will then issue a BEGIN command to inform the other
VNET server of its intentions. If the other server agrees, both
servers will bootstrap to a binary protocol for communicating Ethernet
packets. The Handler will remain in place until one of the servers
closes the TCP connection between them. This can be initiated by a
client using the CLOSE command, directed at either server.
Status Enquiry: A client can discover a server's available network interfaces (DEVICES?) and what Handlers it is currently participating in (HANDLERS?).