看到过很多分析Qos的文章,有伪造为tcp数据包什么的,
看似很高深,好像并没有什么用。

在一般的运营商Qos里面,只有两种策略。
1:惩罚式(比如联通,可以使用iperf3 发起上行测试,如果超过一个值,然后这个tcp连接就变得非常慢,只有几k/s,解决办法,只能断开重连。
2:限速式,电信非也,电信限制了单连接的最大上行带宽,大多家宽上行单连接都在15-20Mbps,所以导致电信宽带比较稳定,联通惩罚,体验很差,所以稳定性联通大不如电信,但是联通突发速度快。
不管是电信,还是联通,其实上行,下行qos的判断条件是一样的,基本都是突发快,然后就慢了,
比如:
kcptunclient:192.168.1.2:3321 ->>-kcptunserver:8.8.8.8:80
这是连接方式,本地会有一个端口,对应远程服务端端口,本地端口一般是随机的,
解决Qos就两种方式,
1:每个并发限速,限制最大速度,这样可以使用iperf3去测试当时qos最大值,略小,尽量不要超过惩罚值,
2:设置每个连接的时效。
比如vpngate里面有一种模式,就可以设置多并发,并且多连接。
但是释放本地端口,重新建立连接怎么会话平滑转移,我就不得而知了,
我记得quic是支持会话平滑转移的。
这种现象很明显,比如你刚开始测试kcptun开启的一段时间,速度是挺快,但是挂久了,就变得非常慢,这时候,只需要释放掉隧道,重新发起新隧道即可,这样本地的
kcptunclient:192.168.1.2:3322 ->>-kcptunserver:8.8.8.8:80
kcptunclient:192.168.1.2:3323 ->>-kcptunserver:8.8.8.8:80
kcptunclient:192.168.1.2:3324 ->>-kcptunserver:8.8.8.8:80
一直在变化,运营商Qos那边是有时效期的。
当然;最好的办法是:
1:限速,针对每个隧道限制最大带宽
2:多并发,
3:设置每个隧道的时效,超过时效释放,重新发起新隧道
还有一种情况,我测udp打洞的时候,复现的,
比如阿里云来说
本地 192.168.2.22:8889–>>—阿里云 47.221.22.22:80
udp发送数据,连续发送几个udp数据包,如果阿里云那边没有返回数据,那么本地怎么发数据,阿里云那边也收不到,
这就是我看到一些人有讲必须重启进程才能连上的原因,
如果网络抖动的时候,过多单边发送udp数据,会被视为攻击行为,会被屏蔽
这时候,就要释放掉本地的端口,重新建立新的连接,即可,这就是重启进程就恢复的根本原因。
以上3点如果做到,基本就有本质的改变了。
Qos的条件非常简单,
在互联网中qos除了特别的策略,
只有四个条件,源ip,源port,目标ip,目标port
而且还有时效性,
只要这四个条件一直变,就可以完全避开Qos策略。
发表评论