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

[Feature Request] Allow multiple transports/ports on frpc (in order of preference?) #3909

Open
1 of 11 tasks
gdevenyi opened this issue Jan 3, 2024 · 6 comments
Open
1 of 11 tasks
Labels

Comments

@gdevenyi
Copy link

gdevenyi commented Jan 3, 2024

Describe the feature request

In frps we can specify ports for tcp, kcp and quic, however in frpc.toml we only get to specify a single transport.protocol and serverPort.

It would be nice to be able to specify a comma-separated order of preferred protocols (and corresponding serverPort), that frpc would attempt.

Justification for this is the frpc that UDP protocols may be preferred, however firewalls may not always allow UDP, so a tcp fallback configuration would be nice.

Describe alternatives you've considered

Running multiple frpc daemons with different configs.

Affected area

  • Docs
  • Installation
  • Performance and Scalability
  • Security
  • User Experience
  • Test and Release
  • Developer Infrastructure
  • Client Plugin
  • Server Plugin
  • Extensions
  • Others
@fatedier
Copy link
Owner

fatedier commented Jan 4, 2024

I did not expect a specific scenario that requires this feature.

Consider some potential issues:

  • Will it affect the retry interval? After the server restarts or network fluctuations, it may take longer to recover.
  • If we support configuring multiple server addresses in the future, combined with various retry strategies, it could become very complex.

Currently it is not very clear, more thinking is needed.

@gdevenyi
Copy link
Author

gdevenyi commented Jan 4, 2024

Will it affect the retry interval? After the server restarts or network fluctuations, it may take longer to recover.

I would imagine that retry would start at the top and go through order of preference, it would use the retry interval, the user would be responsible for adjusting the interval to handle this.

If we support configuring multiple server addresses in the future, combined with various retry strategies, it could become very complex.

For me, if there were multiple server addresses, I would just consider it as nested orders of preference, first server, iterate through connection types, then second server, iterate through. As long as its explicitly documented what its going to do the config isn't too complex.

@paolosezart
Copy link

It would also be nice to be able to connect to alternative frp servers. For example, if one server goes down. All clients connect to one of the alternative FRPS.

@gdevenyi
Copy link
Author

gdevenyi commented Jan 4, 2024

It would also be nice to be able to connect to alternative frp servers. For example, if one server goes down. All clients connect to one of the alternative FRPS.

Seems that was already planned, see #3909 (comment) above

@paolosezart
Copy link

Seems that was already planned

Thank you very much for your quick response to requests. You are the best!

@paolosezart
Copy link

I apologize for my importunity. Is it possible to implement the principle of not switching to an alternative server, but a permanent connection to all available servers? In this case, there is no need to think about priorities. Each client, when connected and during operation, will poll all available servers and receive information about available ports.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants