Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Any other transport protocol for LibVNC? #497

Closed
NooshinEghbal opened this issue Feb 3, 2022 · 5 comments
Closed

Any other transport protocol for LibVNC? #497

NooshinEghbal opened this issue Feb 3, 2022 · 5 comments

Comments

@NooshinEghbal
Copy link

Hi,

I was wondering if LibVNC could run over any other protocols like QUIC/UDT to avoid the Head-of-Line blocking problem of TCP?

Thanks,
Nooshin

@bk138
Copy link
Member

bk138 commented Feb 3, 2022

Possibly, but that probably would need some/lotsof work. You can, however, have a look at https://github.com/LibVNC/libvncserver/tree/multicastvnc which uses UDP multicast for the image data.

@NooshinEghbal
Copy link
Author

Thanks.
I looked into multicastvnc/libvncserver/sockets.c and found where the UDP socket created.
But I could not find how you managed reliability using UDP. In other words, in the case of packet loss, how you know to resend it?

@bk138
Copy link
Member

bk138 commented Feb 4, 2022

Thanks. I looked into multicastvnc/libvncserver/sockets.c and found where the UDP socket created. But I could not find how you managed reliability using UDP. In other words, in the case of packet loss, how you know to resend it?

There's an overview here and an in-depth discussion here.

@RokerHRO
Copy link
Contributor

RokerHRO commented Feb 4, 2022

But I could not find how you managed reliability using UDP. In other words, in the case of packet loss, how you know to resend it?

It is the very nature of UDP that packets can be lost without the whole system would collaps. And multicast also does not allow re-sending to individual recepients, because the server does not know who listens to it.

In other words: The chosen odecs must be fault tolerant, fit into one UDP packet and I'd say also more often non-incremental screen updates might be necessary to recover quickly from display artifacts caused by loss packets.

I'd favour VNC-over-RTP, so also an RTCP channel exists where clients can report "channel quality" information back to the server.

@bk138
Copy link
Member

bk138 commented Nov 11, 2023

Let's consider this a dupe of #394 (which has some fault tolerance built into it).

@bk138 bk138 closed this as completed Nov 11, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants