-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Description
xrdp version
0.9.23.1
Detailed xrdp version, build options
xrdp 0.9.23.1
A Remote Desktop Protocol Server.
Copyright (C) 2004-2020 Jay Sorg, Neutrino Labs, and all contributors. See https://github.com/neutrinolabs/xrdp for more information.
Configure options:
--prefix=/usr [0/1157] --sysconfdir=/etc
--localstatedir=/var
--sbindir=/usr/bin
--with-systemdsystemunitdir=/usr/lib/systemd/system
--enable-jpeg
--enable-tjpeg
--enable-fuse
--enable-fdkaac
--enable-opus
--enable-rfxcodec
--enable-mp3lame
--enable-pixman
--enable-painter
--enable-vsock
--enable-ipv6
--enable-pam-config=arch
--enable-rdpsndaudin
--with-imlib2
CFLAGS=-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection
LDFLAGS=-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now
Compiled with OpenSSL 3.2.0 23 Nov 2023
Operating system & version
Arch Linux 20240101.0.204074
Installation method
git clone & make install
Which backend do you use?
xorgxrdp-0.9.19
What desktop environment do you use?
any
Environment xrdp running on
A systemd-nspawn container
What's your client?
Windows 11 mstsc
Area(s) with issue?
Network
Steps to reproduce
- On a server with high latency to the client (~250ms) but enough bandwidth (at least 100Mbps), set up an XRDP server. Here is my dockerfile for setting up the xrdp server. The built docker image is then exported to
/var/lib/machines/xrdp
and booted usingsystemd-nspawn -M xrdp -b
:
FROM archlinux:latest
RUN pacman -Syu --needed --noconfirm --noprogressbar git base base-devel sudo archlinux-keyring
RUN useradd -ms /bin/bash user && groupadd sudo && usermod -aG sudo user && \
echo '%sudo ALL=(ALL:ALL) NOPASSWD: ALL' > /etc/sudoers.d/50-sudo-nopasswd
RUN printf '[archlinuxcn]\nServer = https://repo.archlinuxcn.org/$arch\n' >> /etc/pacman.conf && \
pacman-key --init && \
pacman-key --lsign-key "[email protected]" && \
pacman -Syu --noconfirm --noprogressbar archlinuxcn-keyring && \
pacman -Syu --noconfirm --noprogressbar yay
RUN pacman -Syu --noconfirm --noprogressbar plasma-desktop xorg-server
RUN sudo -u user yay -S aur/xrdp aur/xorgxrdp --noconfirm --noprogressbar
RUN sed -i s%param=Xorg%param=/usr/lib/Xorg% /etc/xrdp/sesman.ini
RUN echo 'startplasma-x11' > /home/user/.xinitrc
Use machinectl shell xrdp
to get into the container and do systemctl start xrdp
to run it. I'm running it in a systemd-nspawn container but the exact way of running xrdp probably doesn't matter.
-
Use msrtc to connect to the server. Install google chrome in the container and play a video. It's very laggy, and the bandwidth is around 1.3Mbps.
-
Use SSH to connect to the server and set up a tunnel with
-L 33890:127.0.0.1:3389
. Then connect to127.0.0.1:33890
. You get the same desktop but the bandwidth goes up to 80Mbps and the video plays smoothly.
✔️ Expected Behavior
Direct msrtc connection should work at least as smoothly as the connection via SSH tunnel, and use up 80Mbps of bandwidth available to xrdp.
❌ Actual Behavior
Direct msrtc connection uses only 1.3Mbps, a tiny fraction of what is possible.
Anything else?
I switched net.ipv4.tcp_congestion_control
between cubic
and bbr
and the behavior doesn't change, suggesting it's not a problem with the congestion algorithm used.