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

Simple Multiplexing(SMUX) #168

Closed
xtaci opened this issue Aug 31, 2016 · 150 comments
Closed

Simple Multiplexing(SMUX) #168

xtaci opened this issue Aug 31, 2016 · 150 comments
Labels

Comments

@xtaci
Copy link
Owner

xtaci commented Aug 31, 2016

https://github.com/xtaci/smux

yamux问题太多, 正在重新实现mux库, 希望感兴趣的同学提意见。

@openertech
Copy link

绝对正确的选择!

2016-08-31 20:11 GMT+08:00 xtaci [email protected]:

https://github.com/xtaci/smux

yamux问题太多, 正在重新实现mux库, 希望感兴趣的同学提意见。


You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
#168, or mute the thread
https://github.com/notifications/unsubscribe-auth/AAIlFoVlgDgBray_4WpiEzt6hhsnKLGSks5qlW9_gaJpZM4Jxikt
.

@xtaci
Copy link
Owner Author

xtaci commented Aug 31, 2016

kcptun smux分支 有能力的可以尝试自己编译

@koolwiki
Copy link

不知道smux有哪方面的优势?

@xtaci
Copy link
Owner Author

xtaci commented Aug 31, 2016

没有优势,主要是消除yamux的一大堆bug,做一个正确的实现。

@xtaci
Copy link
Owner Author

xtaci commented Sep 1, 2016

2016-09-01 10 00 44

2016-09-01 10 00 58

2016-09-01 10 01 31

2016-09-01 10 02 20

SMUX传输曲线

@braveguywallce
Copy link

_2016-09-01t06-28-38 082z
SMUX 似乎已经很好地解决了前面ymux下的CPU/MEM占用过高的问题,今天无论看1080p HD视频,还是全速下载大文件,树莓派上的kcptun占用MEM稳定在80-100M, 最大值100M, 再没有前面ymux版本的攀高到300-500M的夸张情形。 CPU效能也得到大幅提高,树莓派 3 arm7下, 及时满负载高速下载,CPU占用率最大在50.5%左右!

恭喜楼主,软件有了一个质的飞跃!!谢谢!

@xtaci
Copy link
Owner Author

xtaci commented Sep 1, 2016

嗯,alpha测试中。

@baggiogogo
Copy link

没有严谨的测试过,不过可以很直观的感受到y2b缓冲条比原来的更加快速。赞。
昨晚更新一直到现在稳定使用中。

@braveguywallce
Copy link

braveguywallce commented Sep 1, 2016

最大的看点是: CPU , MEM 占用率优化了很多很多,说明系统的效率大大地进步了,几乎是两代不同的产品。

已经在树莓派上跑了一个下午,迄今都很稳定,速度很快很平稳,传输曲线很平坦,比ymux版本的速度又进一步提升了大约80%,真得大赞!佩服啊!

@xtaci xtaci added the smux label Sep 1, 2016
@xtaci
Copy link
Owner Author

xtaci commented Sep 1, 2016

https://github.com/xtaci/kcptun/releases/tag/smuxalpha

刚放了个测试版,有兴趣的同学可以试试。

@neteroster
Copy link

稳定性大幅提升
以前Youtube经常在9000~12000Kbps浮动,现在基本稳定在14000Kbps

@xtaci
Copy link
Owner Author

xtaci commented Sep 1, 2016

很好,希望听到更多的声音。

@neteroster
Copy link

反映一个问题

proxychians+wget下载大文件时会出问题

~/test$ proxychains wget http://23.247.4.35/1GB.test
ProxyChains-3.1 (http://proxychains.sf.net)
--2016-09-01 21:17:10--  http://23.247.4.35/1GB.test
正在连接 23.247.4.35:80... |S-chain|-<>-127.0.0.1:1083-<><>-23.247.4.35:80-<><>-OK
已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度: 1000000000 (954M) [application/octet-stream]
正在保存至: “1GB.test”

1GB.test              0%[                    ]   8.94M  1.43MB/s    in 6.3s    

2016-09-01 21:17:17 (1.43 MB/s) - 在 9378664 字节处连接关闭。 重试中。

以下是kcptun

2016/09/01 21:19:02 stream opened
2016/09/01 21:19:27 write udp 192.168.1.7:38200->x.x.x.x:998: use of closed network connection 0
2016/09/01 21:19:27 write udp 192.168.1.7:38200->x.x.x.x:998: use of closed network connection 0
2016/09/01 21:19:27 stream closed
2016/09/01 21:19:28 stream opened
2016/09/01 21:19:35 stream closed
2016/09/01 21:19:41 write udp 192.168.1.7:52014->x.x.x.x:998: use of closed network connection 0

但是wget自动重试了之后还是可以下载。

@xtaci
Copy link
Owner Author

xtaci commented Sep 1, 2016

@lizongzeshunshun 什么版本

@neteroster
Copy link

@xtaci smux

@choicky
Copy link

choicky commented Sep 2, 2016

@xtaci
0901的测试版,在使用fast3的情况下,速度峰值比0830的好,平均速度好像也比0830的好。

但是,0901会偶尔出现
write udp 192.168.1.5:53867->x.x.x.x:xxxx: use of closed network connection 0
与 @@lizongzeshunshun 的测试反馈类似。

@xtaci
Copy link
Owner Author

xtaci commented Sep 2, 2016

嗯,已经观察到此问题

@xtaci
Copy link
Owner Author

xtaci commented Sep 2, 2016

@braveguywallce
Copy link

Alpha 版本smux
session scavenged write udp 192.168.1.218:48287->116.xxx.xxx.xxx:21: use of closed network connection 0
看了一下log, 会不间断出现上述提示.

@neteroster
Copy link

@xtaci beta测试中问题已经得到解决。感谢!

@choicky
Copy link

choicky commented Sep 2, 2016

@xtaci 真勤快,赞一个。

beta版本没出现之前的“use of closed network connection 0”了。

另,我发现,不管是alpha还是beta,还是之前的版本,YouTube 1080P下网速比 4K或1440P都快...
例如,4G/1440P下,平均网速只有7M左右,1080P反而能有8~9M

我用的是fast3模式。之前尝试manual,但一直没找到比fast3快的参数,所以就没有折腾了。

@braveguywallce
Copy link

braveguywallce commented Sep 2, 2016

@xtaci @lizongzeshunshun
Beta版本的server端确实不再有 “session scavenged write udp 192.168.1.218:48287->116.xxx.xxx.xxx:21: use of closed network connection 0” ,但是client端还是会不间断出现上述提示,看下log就知道。但是这个提示并不影响smux kcptun正常工作,未出现断流现象或者影响下载, wget也没有任何报错!只有client的log里会有这个提示。

其实alpha版本我在用wget下载1G文件时,本身wget并没有任何报错,只有sever/client的log里会有上述提示而已,但是我没有用proxychains.

另外,无论alpha还是beta版本, CPU / MEM 控制得相当好!目前Beta 版本,满负荷工作状态下,server端 MEM 在29M左右,client端MEM在60-68M, 系统也非常稳定。

@braveguywallce
Copy link

@choicky
和kcptun没有关系,网路和个体设备的正常波动而已.我这边1080p / 1440p 下的视频流曲线都很平稳,没有你说的那个情况.

@xtaci
Copy link
Owner Author

xtaci commented Sep 2, 2016

@braveguywallce 重新下载一下beta,刚上传。

@neteroster
Copy link

@braveguywallce 我测试过程中服务端/客户端均没有出现xxx.xxx.xxx.xxx:21: use of closed network connection 0的情况

@braveguywallce
Copy link

braveguywallce commented Sep 2, 2016

@xtaci 最新的beta 0902版本已经OK! client 和 server再无上述提示出现!Beta版本CPU/MEM在我的树莓派上的情况如下(smux kcptun full load):
screenshot - 090216 - 10_51_17

@xtaci
Copy link
Owner Author

xtaci commented Sep 2, 2016

很好,争取晚上发布release.

@braveguywallce
Copy link

@xtaci Highly appreciate your great work! Well done!

@GangZhuo
Copy link

GangZhuo commented Sep 4, 2016

测试下载一个本地文件,不像之前版本了,换了 SMUX 后,曲线比较匹配了。

11

@chk970222
Copy link

@xtaci 我觉得真的很怪,这个特供版本,速率也不高(2000-3000),波动也大,但是体验要好很多,它基本不缓冲,点开就开始播放了,googleplay下载也不断流了,速度虽然慢点,但都在我接受的范围。太奇怪了。不纠结了,谢谢

@xtaci
Copy link
Owner Author

xtaci commented Sep 4, 2016

@chk970222 高度怀疑vps极慢。CPU被同一台机器上的其它vps抢占了完, 这个问题不会做为正式fix,太极端了。当然在以后的优化过程中,会考虑这种极端情况。

@chk970222
Copy link

@xtaci 好的,谢谢,不用考虑我这种极端情况。现在我看了将近一个小时y2b,居然能上万了,但是确实波动大。再次对你的付出表示感谢。

@braveguywallce
Copy link

@chk970222 换稍微好点的vps,一个月出个10美刀也没啥,一年才120美刀,这种小钱就别省了。

@chk970222
Copy link

@xtaci 你一看我就是拿个渣渣来试手,我完全是外行,慢慢稍微熟悉点了来,这点钱倒没事,主要是不会就浪费了。

@c1024
Copy link

c1024 commented Sep 5, 2016

20160904版本还会有session scavenged出现

@xtaci
Copy link
Owner Author

xtaci commented Sep 5, 2016

各位,试一下0904。 若干小修正。
@c1024 正常输出。

@xiocode
Copy link

xiocode commented Sep 5, 2016

@xtaci 我的配置

./client_linux_amd64 -r "xxxxx" -l "xxxxx" -key xxxxx -crypt salsa20 -sndwnd 256 -rcvwnd 1024 -autoexpire 600 -mode manual -conn 2 -nodelay 1 -resend 2 -nc 1 -interval 20 -nocomp -dscp 46 -mtu 1400 -datashard 70 -parityshard 30

./server_linux_amd64 -t "xxxxxx" -l "xxxxx" -key xxxx -crypt salsa20 -sndwnd 2048 -rcvwnd 2048 -mode manual -nodelay 1 -resend 2 -nc 1 -interval 20 -nocomp -dscp 46  -mtu 1400 -datashard 70 -parityshard 30

未使用KT加速情况下,Y2B可以跑到1W2W
使用后只能到7K
8K

Client: KCP SNMP:&{BytesSent:298890 BytesReceived:35680920 MaxConn:2 ActiveOpens:2 PassiveOpens:0 CurrEstab:2 InErrs:0 InCsumErrors:13 InSegs:96872 OutSegs:4848 OutBytes:3946948 RetransSegs:100 FastRetransSegs:0 EarlyRetransSegs:1 LostSegs:99 RepeatSegs:14046 FECRecovered:1537 FECErrs:0 FECSegs:28530}

Server: KCP SNMP:&{BytesSent:74732880 BytesReceived:31151 MaxConn:2 ActiveOpens:0 PassiveOpens:2 CurrEstab:2 InErrs:0 InCsumErrors:21 InSegs:6017 OutSegs:447195 OutBytes:593886977 RetransSegs:256024 FastRetransSegs:136843 EarlyRetransSegs:76874 LostSegs:42307 RepeatSegs:0 FECRecovered:54 FECErrs:0 FECSegs:1792}

是否参数有误,需要调整

@braveguywallce
Copy link

@xiocode 建议在不是很精通网络通信技术的情况下还是不要采用manual模式。可以尝试默认的几种模式,选择适合自己网络环境的。manual模式下,不同参数的组合,对速度的影响差别明显。
另外,kcptun不是对所有的网络环境都起到加速作用的,比如移动,它本身国际出口部分线路的状况就比较好,TCP通信也很畅通,这时候再开启kcptun其实是画蛇添足,反而会降低速度的,还白白浪费了流量和带宽。

@braveguywallce
Copy link

braveguywallce commented Sep 5, 2016

@xtaci 0904 正式版已经测试,没有问题!手机端下载文件的问题也解决了,其它各方面都不错!曲线输出也很漂亮平稳。采用fast模式下,有效流量/消耗流量 >= 1 : 3 , 和某些VPS供应商做的测试结果一致。

@xtaci
Copy link
Owner Author

xtaci commented Sep 5, 2016

2016-09-05 5 26 56

0904的曲线是这样的。

@Cye3s
Copy link

Cye3s commented Sep 6, 2016

0904应该也解决了Openwrt x64上客户端占用大量内存的问题,跑了20多个小时,目前还是25M左右,以前早暴到300M以上了,很好

@xtaci
Copy link
Owner Author

xtaci commented Sep 6, 2016

@Cye3s 还是自己造的轮子更好用。。。哈

@braveguywallce
Copy link

braveguywallce commented Sep 6, 2016

@xtaci 目前0904版本在稳定使用中,现在考虑的也是怎么尽量优化。有关根据SNMP的输出值来精细调整优化manual项下各项参数的专业知识,能否再进一步介绍?谢谢!

@xtaci
Copy link
Owner Author

xtaci commented Sep 6, 2016

@braveguywallce #137 参数调整在这里讨论,你可以先看下我之前的发言,了解基本困难在何处。
另外0906刚发布,做了些清理工作。

@baggiogogo
Copy link

@xtaci 又来请教题外了,实在不好意思,自己实在搞不定,闲时麻烦指点下,谢谢。
树莓派,同时启用adbyby和ss,不成功,走了redsocks就不走adbyby,走了adbyby就不走redsocks。
以下是redsocks,10811端口,监听sslocal1080端口。
:REDSOCKS - [0:0]
-A PREROUTING -p tcp -j REDSOCKS
-A REDSOCKS -d 0.0.0.0/8 -j RETURN
-A REDSOCKS -d 10.0.0.0/8 -j RETURN
-A REDSOCKS -d 127.0.0.0/8 -j RETURN
-A REDSOCKS -d 169.254.0.0/16 -j RETURN
-A REDSOCKS -d 172.16.0.0/12 -j RETURN
-A REDSOCKS -d 192.168.0.0/16 -j RETURN
-A REDSOCKS -d 224.0.0.0/4 -j RETURN
-A REDSOCKS -d 240.0.0.0/4 -j RETURN
-A REDSOCKS -p tcp -j REDIRECT --to-ports 10811
adbyby默认监听80端口,自身在8118端口。
官方给出的iptable为:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8118
请教下是否就无法共存,或者这个情况下iptable到底该怎么写,谢谢。

@RoyLi-Pvt
Copy link

RoyLi-Pvt commented Sep 7, 2016

怀疑SMUX后的版本存在流量过度浪费问题 刚刚更新0906版本的时候看了下vultr控制台 本月入站只有47.83GB 出站居然有553.62 GB十倍还多 这个VPS上只跑了SS和kcptun
额 又看了下图表 应该就是0904的早期版本的问题 图表上553.62 GB的大部分是在0903和0904跑出去的

@xtaci
Copy link
Owner Author

xtaci commented Sep 7, 2016

@Tmily 是的,0904早期版本有bug,0906已经修正。

@xtaci
Copy link
Owner Author

xtaci commented Sep 7, 2016

@baggiogogo 不好意思,我不用redsocks/adbyby 的

@baggiogogo
Copy link

@xtaci 没关系,我这小事,专心你的项目造福大家,感谢感谢。

@Cye3s
Copy link

Cye3s commented Sep 19, 2016

server端好像比SMUX之前的版本占内存了,旧的跑两周内存不会超过30M,新的跑一周左右会到237M
CentOS 7.2 x64
1

@xtaci
Copy link
Owner Author

xtaci commented Sep 19, 2016

@Cye3s 服务器端用GOGC调整吧

@ppgl1
Copy link

ppgl1 commented Sep 28, 2016

smux同样设置是比yamux快,但至今所有版本下载大文件还是会断线,当然一般会续传看不出来,我是下bigfile网盘是才发现的,客户端session scavenged服务端broken pipe,您说的是客户端设置了autoexpire就会有brokenpipe,但同样设置yamux版却不会有,参数还是前几天那贴老样子0 40 2 1

@xtaci
Copy link
Owner Author

xtaci commented Sep 28, 2016

autoexpire会强制断线 ,之前的yamux不会强制断线,会占用不必要的带宽。正常行为。

@cjjdaq
Copy link

cjjdaq commented Sep 29, 2016

@baggiogogo
iptables -t nat -A PREROUTING -p tcp -j REDSOCKS
iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 169.254.0.0/16 -j RETURN
iptables -t nat -A REDSOCKS -d 172.16.0.0/12 -j RETURN
iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN
iptables -t nat -A REDSOCKS -d 224.0.0.0/4 -j RETURN
iptables -t nat -A REDSOCKS -d 240.0.0.0/4 -j RETURN
iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 10811
iptables -t nat -I OUTPUT -p tcp -j REDSOCKS
iptables -t nat -A zone_lan_prerouting -p tcp --dport 80 -j REDIRECT --to-ports 8118

试试吧

@baggiogogo
Copy link

@cjjdaq,好的,我试试,感谢!

@xtaci xtaci closed this as completed Oct 24, 2016
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