package vchan

  1. Overview
  2. Docs
Xen Vchan implementation

Install

Dune Dependency

Authors

Maintainers

Sources

vchan-6.0.1.tbz
sha256=e44edd2133158ab628c54929f196a6440a25ca103a6af5c624d022a31781b95d
sha512=8507095e49d2c47d3aa71a62a2856dea3bce0607ee3f03cd9c4a7a93b2a0f6b53788ef0345ce1193a10048251f4bd0f6d1af74ba2191682686ec463653b17622

README.md.html

README.md

This is an implementation of the Xen "libvchan" or "vchan" communication protocol in OCaml. It allows fast inter-domain communication using shared memory.

Linux configuration

Make sure your systems are properly configured. You may need to:

sudo modprobe xen-evtchn
sudo modprobe xen-gntdev
sudo modprobe xen-gntalloc
mount -t xenfs xenfs /proc/xen

To use in Linux

To connect as a server to a client with domid 'domid' and using the string 'port' to denote the connection:

open Vchan_lwt_unix

open_server ~domid ~port ()
>>= fun (ic, oc) ->
Lwt_io.write_line oc "hello"
>>= fun () ->
Lwt_io.flush oc
>>= fun () ->
Lwt_io.close ic
>>= fun () ->
Lwt_io.close oc

To connect as a client, replace open_server with open_client.

To use the command-line

On both of your VMs, find their domain ids:

xenstore-read domid

On the domain with domid <server domid>, listen for a single connection from <client domid> on <port>:

xencat -l <client domid> <port>

On the domain with domid <client domid>, connect to <server domid>:

xencat <server domid> <port>

So to transfer a file foo from domid 1 to domid 2:

On domain 2, listen for the connection and retrieve the file:

xencat -l 1 foo > copy-of-foo

On domain 1, transmit the file:

cat foo | xencat 2 foo