Releases: xtaci/kcptun
CPU optimizations
- CPU optimizations(including syscall, segment merging, frame allocation).
- Wait maximum
-interval
for packet merging before sending. - Fix a possible CONNECTION STALL in smux.
- Reduce default parameter
-interval
due to the improvements of code execution.
(Uploaded at March 22, 20:20, Everyone is suggested to upgrade to this version.)
$ go version
go version go1.8 darwin/amd64
acf7a01
xtaci/kcp-go@993d72d
xtaci/smux@a1a5df8
63a7a4bd5cb4075ee584225c2cff82eae1ae3e7d kcptun-linux-amd64-20170322.tar.gz
130cb7229871ff06fb0ffda2051bf41bac5e72cc kcptun-linux-386-20170322.tar.gz
25bd350a3fc6bd5dce566a220ab76da1d6f61ac6 kcptun-darwin-amd64-20170322.tar.gz
4933cd73416fb013e7f69806931f927ce00fb00e kcptun-darwin-386-20170322.tar.gz
82095425eab1531cf6952390b5a0faa40ad6c40a kcptun-windows-amd64-20170322.tar.gz
9d7e18ea690454f063db12d83837d533d3ef4f7c kcptun-windows-386-20170322.tar.gz
c8c2b680b9c405559e47b7acb917ae0ece09e179 kcptun-freebsd-amd64-20170322.tar.gz
3cb3fb14601e57d2508f6d685dd1c879df2662f0 kcptun-freebsd-386-20170322.tar.gz
bde3196ed45764d85cddf685bb45f9e3b56536d7 kcptun-linux-arm-20170322.tar.gz
f90d15322ad12c043b790d3afd15745a335a2dc0 kcptun-linux-mipsle-20170322.tar.gz
560e75b983e05a3386f1be5b5036011dda582d3a kcptun-linux-mips-20170322.tar.gz
executable binary size shrinking on client side
executable binary size shrinking on client side, by removing -pprof
option on client.
$ go version
go version go1.8 darwin/amd64
e667b74
xtaci/kcp-go@b07f72b
xtaci/smux@949ec4d
MAKE SURE TO CHECK SHA1 CHECKSUM IF IN DOUBT.
SHA1 CHECKSUM
a854c07089f39e86d44e77064eb061a7e6f3857e kcptun-linux-amd64-20170315.tar.gz
ad44e174de86eb2b32d8b28769f938f9064f16f9 kcptun-linux-386-20170315.tar.gz
3310c6cc8eeb22b4ac32aeaf3652694909950561 kcptun-darwin-amd64-20170315.tar.gz
2900f227cffe583576aefceb1cac538971457a12 kcptun-darwin-386-20170315.tar.gz
d4670dbd77b13c37a08630beac83de4122d198fe kcptun-windows-amd64-20170315.tar.gz
147eb28787f0233eb06d5bbfaa1ec12b85ac6566 kcptun-windows-386-20170315.tar.gz
bd696a01115e6e608a85ba2ca25cd92e1ce15a51 kcptun-freebsd-amd64-20170315.tar.gz
33a187daca9307a62651b07f737a8f7e2e6087d7 kcptun-freebsd-386-20170315.tar.gz
7575a2b7fb0c50f998d823887bb4bb1035bed705 kcptun-linux-arm-20170315.tar.gz
de0d692e07f3971fc1bcc9aa7578ac592257d8f0 kcptun-linux-mipsle-20170315.tar.gz
14a450276c13fc1a1b4263a99494bb238ff8b473 kcptun-linux-mips-20170315.tar.gz
Plenty of Optimizations on Memory Usage
-
Plenty of optimizations on memory usage, Including:
a.kcp.acklist
shrink strategy
b.kcp.queue
shrink strategy
c.fec.rx
shrink strategy
d.sess.output
temp buffer zero allocation
e.UDPSession.receiver
Listener.monitor
receiving buffer. -
New option
-pprof
which listens on http://IP:6060/debug/pprof/ for debugging purpose. -
FIX THE MEMORY LEAK IN ALL PREVIOUS RELEASES IN MARCH.(UPDATE: Mon Mar 13 12:54:50 UTC 2017). (修正三月早期版本存在的服务器端内存泄漏问题。13日晚9点重新上传。)#415 #417
-
FIX too many
CLOSE_WAIT
in client side. #416
$ go version
go version go1.8 darwin/amd64
b3c4ec9
xtaci/kcp-go@1de9285
xtaci/smux@949ec4d
MAKE SURE TO CHECK SHA1 CHECKSUM IF IN DOUBT.
SHA1 CHECKSUM
82a9c30cc704eb0c2b29165c91172d014a9cce75 kcptun-linux-amd64-20170313.tar.gz
e7e9791086c88fd926c9f1860646cb58604557cc kcptun-linux-386-20170313.tar.gz
c9e13f93b324f8f117fa39eb248ff17d8e72e6d6 kcptun-darwin-amd64-20170313.tar.gz
e6662069ff7e75c67f240fe7e451b141ccd8eeca kcptun-darwin-386-20170313.tar.gz
a4450a2cf49c7d1013cc6be20e3680064c89ac76 kcptun-windows-amd64-20170313.tar.gz
497ea2aab1a2a3ada953b347990514fb291bf5f9 kcptun-windows-386-20170313.tar.gz
3827a36b111c9bdeeca93ce66fd726649b2859bd kcptun-freebsd-amd64-20170313.tar.gz
166f3ebf5ea7d15c19086f2ea5c6821579c29b90 kcptun-freebsd-386-20170313.tar.gz
b58604532047c3f83549be5f4a0d609b6992b77a kcptun-linux-arm-20170313.tar.gz
10817796ee5c78c5ceafca0d36717327df902e31 kcptun-linux-mipsle-20170313.tar.gz
b5a117baa22d7f3410d3d45624bf4f4e8c57741c kcptun-linux-mips-20170313.tar.gz
累计优化
- eliminate spurious wake up of writeable events.
- eliminate atomic stalls when no snmp info needs update for each interval.
- only trust window update from regular packets, not FEC packets.
2f0783f
xtaci/kcp-go@39bec2a
xtaci/smux@949ec4d
SHA1 Checksums:
b5654a3c9a1dfeacf136ea408a5f2a7607efbefe kcptun-linux-amd64-20170221.tar.gz
3086afd59b423bccc1d5f68bf82a11757c72793d kcptun-linux-386-20170221.tar.gz
18e7fda6b0d8c374049226adac0df339c3208096 kcptun-darwin-amd64-20170221.tar.gz
70611af1975e39c03c1351c10c560d4e420634a2 kcptun-darwin-386-20170221.tar.gz
c922a26f2fbd9f89a152f244817d20a9e5957597 kcptun-windows-amd64-20170221.tar.gz
455e10fc01976b972f25d31e4cc7d3b1a570678d kcptun-windows-386-20170221.tar.gz
7c88b68b2d77974973e124447ec456c285c88ba3 kcptun-freebsd-amd64-20170221.tar.gz
f52780201f925b047b4877e7fcc6d893046bca80 kcptun-freebsd-386-20170221.tar.gz
22e37d839374558d4fcf7b0934237576eece0cdf kcptun-linux-arm-20170221.tar.gz
d996cdf7ccff450bfe444ab70a5657f974d43a48 kcptun-linux-mipsle-20170221.tar.gz
471065274c32ab1087638075918899cb4ead14ec kcptun-linux-mips-20170221.tar.gz
golang 1.8 stable recompile
- golang 1.8 stable recompile
- add
-scavengettl
to client to force teardown expired connections. - optimize TTL estimator.
2f0783f
xtaci/kcp-go@19d53b2
xtaci/smux@949ec4d
ee51fcd9228e9010048d6631b684cdcd2516dad2 kcptun-linux-amd64-20170218.tar.gz
d74b9a99dc865e225e6f8f5cc58412a162ec129f kcptun-linux-386-20170218.tar.gz
a1b3a6d5874384dd5567642419dadb9e6e4f5211 kcptun-darwin-amd64-20170218.tar.gz
3d17587055d809d2dc0313a3d736b5f46e65acac kcptun-darwin-386-20170218.tar.gz
226d3cebbda71fea709e283511ffda9aadf0c0d3 kcptun-windows-amd64-20170218.tar.gz
3501dc4c31248da20ff75b4739e5b5bd18a9f6e3 kcptun-windows-386-20170218.tar.gz
66146615bc05db5ec179bc38516b88ececee86e4 kcptun-freebsd-amd64-20170218.tar.gz
21717f7e330acbcdb19a588cd77e32180fd4c462 kcptun-freebsd-386-20170218.tar.gz
066dd25b2679556a6b80e4fa5758ebb827166c5d kcptun-linux-arm-20170218.tar.gz
dd0f397b9650f3692e0677ec777303fc43d67f8b kcptun-linux-mipsle-20170218.tar.gz
24cdfadbdd65720b38dc16e11abc5aa189c129d9 kcptun-linux-mips-20170218.tar.gz
RTT算法优化-Round-3
- 只使用session定时器,避免kcp_update的thresh抖动。
- rto计算中的clock granularity设置为 interval值。
- 去掉rtomin的硬性限制。
- 对于单个数据包中的所有ack,只使用最后一个ack计算rto。
- -datashard/-parityshard 增加 -ds -ps 简写
$ go version
go version go1.8rc2 darwin/amd64
4683149
xtaci/smux@d1bdf08
xtaci/kcp-go@6da5044
MD5 (kcptun-linux-amd64-20170120.tar.gz) = f4914ad45cd848f50cd8cba1bbcc8c0a
MD5 (kcptun-linux-386-20170120.tar.gz) = 52089566730d20365f8f15d968441483
MD5 (kcptun-darwin-amd64-20170120.tar.gz) = 4a466bddbc7faa3b43576aaa76a44628
MD5 (kcptun-darwin-386-20170120.tar.gz) = cdaeccc034eb40449e950158d4ed7493
MD5 (kcptun-windows-amd64-20170120.tar.gz) = 50b80be45d3155f053d38441e32aec9b
MD5 (kcptun-windows-386-20170120.tar.gz) = 142fbab7d84241b9ee2524df064b9fe6
MD5 (kcptun-freebsd-amd64-20170120.tar.gz) = 5c1d0d45c151f25b8f679b4cf198d39f
MD5 (kcptun-freebsd-386-20170120.tar.gz) = 8cd76138db134318288fdaf17fed5650
MD5 (kcptun-linux-arm-20170120.tar.gz) = f03b8e20a6ec264aef8ce6a7c3daed2e
MD5 (kcptun-linux-mipsle-20170120.tar.gz) = d9c0ac67229fe3cc2a15871d39aae989
MD5 (kcptun-linux-mips-20170120.tar.gz) = 31f13ce741af3ea0c05b0a12aca6e0c9
RTT算法优化-Round-2
- ack结构中更准确的RTT估算。
- 锁优化,更平滑的rtt计算jitter。
MD5 (kcptun-linux-amd64-20170117.tar.gz) = 7024a741c79a1d679ba11f3af6f5bc0a
MD5 (kcptun-linux-386-20170117.tar.gz) = 6fd7f35573ecb7d3ccf82069f6960d6d
MD5 (kcptun-darwin-amd64-20170117.tar.gz) = ce9bdc02317d0d9eb8fffec4c88a39e3
MD5 (kcptun-darwin-386-20170117.tar.gz) = f0cc700165a4bff4eb6727634abc34b2
MD5 (kcptun-windows-amd64-20170117.tar.gz) = 7fac79d0f3689ff435660614e2bcfe26
MD5 (kcptun-windows-386-20170117.tar.gz) = 4769ff2ee5cb64932f0949ee25492bdc
MD5 (kcptun-freebsd-amd64-20170117.tar.gz) = 942a7d7e65f8cdbdf598fca70fb49926
MD5 (kcptun-freebsd-386-20170117.tar.gz) = 496fb3d450261fea5dbe94c94b52ea15
MD5 (kcptun-linux-arm-20170117.tar.gz) = baaec00f7dfeab9d31f329881b84077d
MD5 (kcptun-linux-mipsle-20170117.tar.gz) = c34e7fc3a13716f2fcf35c78da0a76cc
MD5 (kcptun-linux-mips-20170117.tar.gz) = 429bd614bae5a8d1d826c95e7c21594b
RTT问题优化等
- 客户端默认窗口值(-rcvwnd)降为512。
- smux锁优化。
- kcp-go锁优化。
- 更准确的数据包时间(更准确的RTT估算)。
- 缓解Buffered Chan 引起的BufferBloat,降低重传率。
- 修正一个kcp-go可能引起死锁的问题。
- snappy压缩切换为golang官方版本。
- 使用go1.8rc1编译。
(建议所有人更新)
$ go version
go version go1.8rc1 darwin/amd64
ce4af62
xtaci/smux@d1bdf08
xtaci/kcp-go@2375cf6
MD5 (kcptun-linux-amd64-20170114.tar.gz) = 2272644e5d63b40c72c9787b523452fd
MD5 (kcptun-linux-386-20170114.tar.gz) = de68149aaf55859efe6f4e53f6ac892a
MD5 (kcptun-darwin-amd64-20170114.tar.gz) = 8cc7425554eff3b71374013ed3387bc3
MD5 (kcptun-darwin-386-20170114.tar.gz) = 696495423d9d431884462a32f0d97f15
MD5 (kcptun-windows-amd64-20170114.tar.gz) = 80f3e2d2716edb19530137455dcc0253
MD5 (kcptun-windows-386-20170114.tar.gz) = 6c88e48ac45821f0ea4c9ba9aa4cbe9f
MD5 (kcptun-freebsd-amd64-20170114.tar.gz) = 1c46e7c47ad70aec0be2e5cb048e4256
MD5 (kcptun-freebsd-386-20170114.tar.gz) = 51c8a990ac2881e89be8fa8d973d86c6
MD5 (kcptun-linux-arm-20170114.tar.gz) = 08556db6d26e67a83c07584dae37be08
MD5 (kcptun-linux-mipsle-20170114.tar.gz) = f3c63e819281a3c2efcc41171360d340
MD5 (kcptun-linux-mips-20170114.tar.gz) = c8ade377bb41fb6911772d981b89d0ac
累计更新
- 客户端默认窗口值(-rcvwnd)降为512。
- smux锁优化。
- kcp-go锁优化。
- snappy压缩切换为golang官方版本。
- 使用go1.8rc1编译。
$ go version
go version go1.8rc1 darwin/amd64
ce4af62
xtaci/smux@d1bdf08
xtaci/kcp-go@1e82838
MD5 (kcptun-linux-amd64-20170112.tar.gz) = 876e2c4ebdfe2c9f9f1c08a134f74a89
MD5 (kcptun-linux-386-20170112.tar.gz) = 514ed8fd7809763bb4a34ccc25b33350
MD5 (kcptun-darwin-amd64-20170112.tar.gz) = 71263e6ef7849daaeaca4f36a84f1b16
MD5 (kcptun-darwin-386-20170112.tar.gz) = 48a5784211d397ffae7cf7a1a55edd44
MD5 (kcptun-windows-amd64-20170112.tar.gz) = 71536ebe5d261f58cf288a0226241bf5
MD5 (kcptun-windows-386-20170112.tar.gz) = 0ed5decb7c6f8a3d8ff5b37ec9aa73d3
MD5 (kcptun-freebsd-amd64-20170112.tar.gz) = 56f89166ae3eea48fa984dac750d7df4
MD5 (kcptun-freebsd-386-20170112.tar.gz) = 293346b0d54d541f0e48f20116ba6754
MD5 (kcptun-linux-arm-20170112.tar.gz) = e1a2343e6cf52851a5ae97cfd8c31579
MD5 (kcptun-linux-mipsle-20170112.tar.gz) = a484f227e2efaf3704c035a41d807823
MD5 (kcptun-linux-mips-20170112.tar.gz) = 4d3dec3c2d89247e9dd84432d73cfdae
累计更新
- 修正客户端Accept超过可打开文件数时crash的问题。
- 增加--snmplog --snmpperiod选项,输出SNMP日志。
- 微调kcp-go中的快速重传部分,减少RepeatSegs。
- 采用go1.8beta2编译。
$ go version
go version go1.8beta2 darwin/amd64MD5 (kcptun-linux-amd64-20161222.tar.gz) = 28689c0bc8ad3ad2f7285dfe0d86471b MD5 (kcptun-linux-386-20161222.tar.gz) = 3ccc021e426273f5b4f859d736e6cbcf MD5 (kcptun-darwin-amd64-20161222.tar.gz) = 8d3fa58d28d0d6196660440fdd91b4cb MD5 (kcptun-darwin-386-20161222.tar.gz) = 377f95cbb4742e1af5f15661763b91e9 MD5 (kcptun-windows-amd64-20161222.tar.gz) = b7ed19a3137b9344f8826ed54cc87184 MD5 (kcptun-windows-386-20161222.tar.gz) = 4cc3e1c61843ddad94fbe2aa44c11557 MD5 (kcptun-freebsd-amd64-20161222.tar.gz) = e77d7bf1f214d39a85411aef5fac23e6 MD5 (kcptun-freebsd-386-20161222.tar.gz) = b3773a608b4991818b5f4a9a7f927964 MD5 (kcptun-linux-arm-20161222.tar.gz) = c99b6db1ecf71a725bbe9813822e4997 MD5 (kcptun-linux-mipsle-20161222.tar.gz) = 651c0d1508cc39d325ede16fef8a74c4 MD5 (kcptun-linux-mips-20161222.tar.gz) = 54082482ad97e7adabc73cd4bac99a24