Comments (8)
especially when some online games send UDP packets with inappropriate socket strategy that it creates new socket to send every UDP packet
UDPspeeder increases number of packets, it shouldn't increase num of (unique) 5 tuples even if the inappropriate game creates new socket on every packet (at least from my understanding)
I think maybe a UDP multiplexer option may solve this problem. I do understand this will cost more traffic to record real socket info in UDP message part and reduce the efficient body length under same MTU, but it may be really useful in some cases
if multiplexer does work for you, you can pipe UDPspeeder traffic through some other tunnels which supports multiplexer by themselves. For example:
UDPspeeder----->udp2raw---------------(internet)----------------->udp2raw------>UDPspeeder
UDPspeeder----->wireguard--------------(internet)----------------->wireguard------->UDPspeeder.
from udpspeeder.
or maybe:
wireguard----->UDPspeeder------------------(internet)------------->UDPspeeder------>wireguard
then there will be only a single 5-tuple exposed to both UDPspeeder and the ISP
from udpspeeder.
Thank you for your reply.
I have recently tried udp2raw. But it introduces extra 10ms latency during every half loop even I have closed the encryption. It is unbearable for some of FPS players.
I haven't tried wireguard. I will try it later and feedback. Thank you for your advice. :)
from udpspeeder.
no udp2raw shouldn't add that much latency.
when I hear something like 10ms, usually it's the latency glitch by some ISP load balancing strategy (or other ISP stuffs). (not sure if IPLC makes a difference)
a properly written c++ program shouldn't add that much latency
If I remember correcly when I do loop test locally it adds only a few ms (a few should be < 2)
from udpspeeder.
You are right. I didn't consider about ISP tcp latency. I suddenly have an idea. If I use raw-mode UDP in udp2raw, will it multiplex all traffic into a same 5-tuple as what it does in tcp mode?
from udpspeeder.
If I use raw-mode UDP in udp2raw, will it multiplex all traffic into a same 5-tuple as what it does in tcp mode?
yes, all modes of udp2raw have built-in multiplexer
but I suggest you to use this method (as least try it as the baseline for troubleshooting):
wireguard----->UDPspeeder------------------(internet)------------->UDPspeeder------>wireguard
it's likely to have least problems
especially when some online games send UDP packets with inappropriate socket strategy that it creates new socket to send every UDP packet
since when a network program malbehaves like this, there might be other weird problems you are not aware of
but a tun/VPN based solution can filter out most of those possible weird problems.
from udpspeeder.
If I use raw-mode UDP in udp2raw, will it multiplex all traffic into a same 5-tuple as what it does in tcp mode?
yes, all modes of udp2raw have built-in multiplexer
but I suggest you to use this method (as least try it as the baseline for troubleshooting): wireguard----->UDPspeeder------------------(internet)------------->UDPspeeder------>wireguard it's likely to have least problems
especially when some online games send UDP packets with inappropriate socket strategy that it creates new socket to send every UDP packet
since when a network program malbehaves like this, there might be other weird problems you are not aware of but a tun/VPN based solution can filter out most of those possible weird problems.
I haven't considered about the malbehaviors of popular public softwares until I saw hundreds of established udp sessions created by a single process. I was shocked as well. Maybe they only launched some basic test on the network part of their games without any further optimization.
from udpspeeder.
First, Wangyu, appreciate your work. Thanks.
On the multiplexing/demultiplexing topic, I hope the following function could be added. Still it is a single flow from application perspective.
- create multiple tunnels - different ip:port combination, or simply different port in 2.2.2.2
e.g. 3 tunnels
1.1.1.1:1024 - 2.2.2.2:1111
1.1.1.1:1025 - 2.2.2.2:7778
1.1.1.1:5101 - 2.2.2.2:9999
It avoids blocking traffic by inspecting single destination port
- The better case is to allow different destination IP finally terminated at the same host. The host has .2, .3 and .4 IP.
1.1.1.1:1024 - 2.2.2.2:1111
1.1.1.1:1025 - 2.2.2.3:7778
1.1.1.1:5101 - 2.2.2.4:9999
Remember the frequency hopping theory...I would like to see that.
from udpspeeder.
Related Issues (20)
- 是否可以通过开启多个socket加速 HOT 1
- wireguard本地client端,无法接受到数据,如何解决
- UDPspeeder+udp2raw前面还需要$$吗?
- iperf不触发udpspeeder连接?
- 大佬是否写错了? HOT 2
- 原理确实比我牛逼多了,就是代码写的真jb烂
- 编译了一个优化版本 HOT 7
- Add the ability to not bind() and not connect(), at least on client mode. It's UDP anyway. HOT 5
- How to configure UDPspeeder for Wireguard? HOT 4
- How to use UDPspeeder HOT 2
- 本项目能否运行在Render或Replit项目中? HOT 1
- 请问下, 有啥法子能直接转发tcp的流量? HOT 1
- could you please add some systemd auto run script? HOT 1
- max_conv_num max number HOT 1
- OpenVPN connection is established correctly over multi client configuration, but no ping HOT 1
- :error: -r not found" pls help me thx HOT 2
- Keep using old ipv6 address when preferred lifetime already out date HOT 4
- Udpspeeder with Shadowsocks or Socks5 possible? HOT 3
- Incomplete transfer when testing speeder using netcat HOT 7
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from udpspeeder.