Fork of https://github.com/XTLS/Xray-core. It's still up, but there's a risk that the upstream will be removed later.
Go to file
yuhan6665 578d903a9e
Quic related improvements (#915)
* DialSystem for Quic

DialSystem() is needed in case of Android client,
where the raw conn is protected for vpn service

* Fix client dialer log

Log such as:
tunneling request to tcp:www.google.com:80 via tcp:x.x.x.x:443
the second "tcp" is misleading when using mKcp or quic transport

Remove the second "tcp" and add the correct logging for transport dialer:
- transport/internet/tcp: dialing TCP to tcp:x.x.x.x:443
- transport/internet/quic: dialing quic to udp:x.x.x.x:443

* Quic new stream allocation mode

Currently this is how Quic works: client muxing all tcp and udp traffic through a single session, when there are more than 32 running streams in the session,
the next stream request will fail and open with a new session (port). Imagine lineup the session from left to right:
 |
 |  |
 |  |  |

As the streams finishes, we still open stream from the left, original session. So the base session will always be there and new sessions on the right come and go.
However, either due to QOS or bugs in Quic implementation, the traffic "wear out" the base session. It will become slower and in the end not receiving any data from server side.
I couldn't figure out a solution for this problem at the moment, as a workaround:
       |  |
    |  |  |
 |  |  |

I came up with this new stream allocation mode, that it will never open new streams in the old sessions, but only from current or new session from right.
The keeplive config is turned off from server and client side. This way old sessions will natually close and new sessions keep generating.
Note the frequency of new session is still controlled by the server side. Server can assign a large max stream limit. In this case the new allocation mode will be similar to the current mode.
2022-01-28 18:11:30 -05:00
.github go 1.17.6 (#900) 2022-01-14 17:49:46 -05:00
app chore fixed (#897) 2022-01-12 21:51:47 -05:00
common chore fixed (#897) 2022-01-12 21:51:47 -05:00
core Update version 1.5.2 2021-12-24 09:19:17 -05:00
features Add observatory / latestPing balancing strategy 2021-10-22 17:16:20 +08:00
infra grpc: add initial_windows_size option 2021-12-19 21:14:14 -05:00
main Observatory related fixes (#788) 2021-10-26 13:00:31 +08:00
proxy Quic related improvements (#915) 2022-01-28 18:11:30 -05:00
testing Remove a missed alterId in test 2022-01-14 17:52:12 -05:00
transport Quic related improvements (#915) 2022-01-28 18:11:30 -05:00
.gitignore Add .vscode to ignored directories 2021-11-04 21:08:26 -04:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md (#941) (#749) 2021-10-22 12:38:40 +08:00
go.mod Bump google.golang.org/grpc from 1.43.0 to 1.44.0 2022-01-25 20:56:13 -05:00
go.sum Bump google.golang.org/grpc from 1.43.0 to 1.44.0 2022-01-25 20:56:13 -05:00
LICENSE v1.0.0 2020-11-25 19:01:53 +08:00
README.md doc: add contributing section to readme and update build instruction style (#863) 2021-12-19 19:10:00 -05:00

Project X

Project X originates from XTLS protocol, provides a set of network tools such as Xray-core and Xray-flutter.

License

Mozilla Public License Version 2.0

Installation

Contributing

Code Of Conduct

Usage

Xray-examples / VLESS-TCP-XTLS-WHATEVER

GUI Clients

Credits

This repo relies on the following third-party projects:

Compilation

Windows

go build -o xray.exe -trimpath -ldflags "-s -w -buildid=" ./main

Linux / macOS

go build -o xray -trimpath -ldflags "-s -w -buildid=" ./main

Telegram

Project X

Project X Channel

Stargazers over time

Stargazers over time