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

File transfer slow via tsclient when RDGateway is in use #9983

Open
aresliharris opened this issue Mar 14, 2024 · 7 comments
Open

File transfer slow via tsclient when RDGateway is in use #9983

aresliharris opened this issue Mar 14, 2024 · 7 comments

Comments

@aresliharris
Copy link

Description of the bug

  • A noticeable file transfer speed difference was captured from a project that I have been working on via Freerdp(xfreerdp). However, this is not happening while using Microsoft RDP client on Windows or Mac.
  • Specifically, when we transfer a 20mb file from a shared drive to a local hard disk on the remote server, which is the same server with RD Gateway, took over 3mins whereas 20s without using the gateway. (Robocopy was used for benchmarking in this test.)
  • It has been verified that the specs of the server is not the bottle neck and we don't have additional security scanning going one during the test.
  • The issue appears on both freerdp(xfreerdp) 2.7 and 3.2
  • We use Apache Guacamole, which uses freerdp 2.x on the latest version as of Mar 2014, and the same issue occurs during the test.

 

The steps to reproduce the bug (a single 20MB test file transfer)

  • CLI command and configuration used
    • xfreerdp /v:: /cert-ignore /dynamic-resolution /u: /drive:<local_drive_path_for_tsclient_later> /g::
  • RDP server tested is Windows Server 2016 with RDGateway configured on the same server
  • Windows copy and paste tool were used to test (ctrl+C & ctrl+V)
  • Robocopy was also tested, but similar slow transfer performance was noticed
  • what did you expect to happen
    • Less than 20s completion time for the file transfer, which is similar to what was observed while using Microsoft RDP client with shared drive mounted via tsclient
  • what actually happened?
    • It took around 3 mins to transfer the 20MB test file
  • freerdp version (e.g. xfreerdp --version) or package version or git commit.
    • 2.7.x and 3.2.x
  • Operating System, architecture, distribution e.g. linux, amd64, debian.
    • Workstation OS where the xfreerdp was run is on OS X 14.1.2
@akallabeth
Copy link
Member

akallabeth commented Mar 14, 2024

interesting find.

a few more questions:

  1. which gateway protocol was used? (http, websocket or older rpc)
  2. for the tests with windows/mac clients, did they use TCP or UDP?

@aresliharris
Copy link
Author

interesting find.

a few more questions:

  1. which gateway protocol was used? (http, websocket or older rpc)
  2. for the tests with windows/mac clients, did they use TCP or UDP?

Hi @akallabeth ,

Thank you for commenting on this.

As you can see from the freerdp commend used, the slowness appeared when the connection was established based on the default protocol. From the Windows server side, I believe it's using websocket for the gateway protocol.

The tests with clients, they use TCP. Actually, both UDP and TCP were tested, but none of them made a difference on the file transfer issue.

Best,
Ares

@akallabeth
Copy link
Member

@aresliharris ok.
can you try with explicit gateway config (disabled websocket and another test with rpc if supported by your config)?
would be interesting to narrow down if this is a generic issue or just for a specific gateway transport

@aresliharris
Copy link
Author

@aresliharris ok. can you try with explicit gateway config (disabled websocket and another test with rpc if supported by your config)? would be interesting to narrow down if this is a generic issue or just for a specific gateway transport

@akallabeth In the latest version freerdp 3.x, I tested all the transport types by using different flags, but none of them worked/performed normal speed file transfer from the shared tsclient drive to the RDP server connected.

Would you be able to provide some guidance if you are talking about changing the gateway transport configs from the Windows server side? I tried to find ways to enforce the transport type from Windows server side, but I haven't been able to.

Thanks,
Ares

@akallabeth
Copy link
Member

akallabeth commented Mar 15, 2024

@aresliharris setting client side is enough.

  1. /gateway:type:http,no-websockets
  2. /gateway:type:http
  3. /gateway:type:rpc

do you have any details on speed on each one of these?

it might be simple optimization of some packet sizes or it could be something more complicated.
don´t have time to do tests now though, we´re still in the bug fixing stage, so speed improvements usually come later

[edit] oh, and I hope you do the tests without guacamole too? (so plain xfreerdp to have a reference)

@akallabeth
Copy link
Member

@aresliharris oh, and most importantly, how does it perform for direct (non gateway) connections for you?

@aresliharris
Copy link
Author

aresliharris commented Mar 20, 2024 via email

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

2 participants