All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eric Blake <eblake@redhat.com>
To: "Daniel P. Berrangé" <berrange@redhat.com>
Cc: Eric Wheeler <nbd@lists.ewheeler.net>,
	QEMU <qemu-devel@nongnu.org>,
	"Richard W.M. Jones" <rjones@redhat.com>,
	Nir Soffer <nsoffer@redhat.com>,
	nbd@other.debian.org, libguestfs <libguestfs@redhat.com>
Subject: Re: [Libguestfs] Provide NBD via Browser over Websockets
Date: Fri, 29 May 2020 08:58:06 -0500	[thread overview]
Message-ID: <ff2e7dd1-c8b2-b46c-3c3b-ed88d9ad9689@redhat.com> (raw)
In-Reply-To: <20200529135042.GJ2755532@redhat.com>

On 5/29/20 8:50 AM, Daniel P. Berrangé wrote:

>>> (2) You need to persuade qemu's NBD client to read from a WebSocket.
>>> I didn't really know anything about WebSockets until today but it
>>> seems as if they are a full-duplex protocol layered on top of HTTP [a].
>>> Is there a WebSocket proxy that turns WS into plain TCP (a bit like
>>> stunnel)?  Google suggests [b].
>>>
>>> [a] https://en.wikipedia.org/wiki/WebSocket#Protocol_handshake
>>> [b] https://github.com/novnc/websockify
>>
>> qemu already knows how to connect as a client to websockets; Dan Berrange
>> knows more about that setup.  I suspect it would not be too difficult to
>> teach the qemu NBD client code to use a WebSocket instead of a Unix or TCP
>> socket as its data source.
> 
> Actually the inverse. The QIOChannelWebsocket impl is only the server
> side of the problem, as used by QEMU's VNC server. We've never implemented
> the client side. There is nothing especially stopping us doing that - just
> needs someone motivated with time to work on it.

In the meantime, you may still be able to set up something like:

local machine:
iso -> NBD server -> Unix socket -> websockify -> WebSocket

remote machine:
WebSocket -> websockify -> Unix socket -> qemu NBD client

Adding websocket client support into qemu would reduce the length of the 
chain slightly (for less data copying) by getting rid of a websockify 
proxy middleman, but would not necessarily improve performance (it's 
hard to say where the latency bottlenecks will be in the chain).

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3226
Virtualization:  qemu.org | libvirt.org



  reply	other threads:[~2020-05-29 14:25 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <alpine.LRH.2.11.1810131833150.18520@mx.ewheeler.net>
     [not found] ` <CAMRbyytcufK8-XdFu7LU+UwO_FRoGJO2FhhBHtH9etf3A2htwQ@mail.gmail.com>
     [not found]   ` <alpine.LRH.2.11.2005280014150.13970@mail.ewheeler.net>
     [not found]     ` <20200528090443.GN7304@redhat.com>
     [not found]       ` <alpine.LRH.2.11.2005282147410.13970@mail.ewheeler.net>
     [not found]         ` <20200529093744.GS3888@redhat.com>
2020-05-29 12:50           ` [Libguestfs] Provide NBD via Browser over Websockets Eric Blake
2020-05-29 13:50             ` Daniel P. Berrangé
2020-05-29 13:58               ` Eric Blake [this message]
2020-05-29 14:13                 ` Richard W.M. Jones
2020-05-29 21:08                   ` Eric Wheeler
2020-05-30  9:27                     ` Richard W.M. Jones
2020-06-01 20:04                       ` Eric Wheeler

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ff2e7dd1-c8b2-b46c-3c3b-ed88d9ad9689@redhat.com \
    --to=eblake@redhat.com \
    --cc=berrange@redhat.com \
    --cc=libguestfs@redhat.com \
    --cc=nbd@lists.ewheeler.net \
    --cc=nbd@other.debian.org \
    --cc=nsoffer@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=rjones@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.