Skip to content

Releases: xtaci/kcptun

CPU optimizations

22 Mar 08:01
Compare
Choose a tag to compare
  1. CPU optimizations(including syscall, segment merging, frame allocation).
  2. Wait maximum -interval for packet merging before sending.
  3. Fix a possible CONNECTION STALL in smux.
  4. 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

15 Mar 05:13
Compare
Choose a tag to compare

executable binary size shrinking on client side, by removing -pprof option on client.

#417

$ 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

13 Mar 04:35
Compare
Choose a tag to compare
  1. 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.

  2. New option -pprof which listens on http://IP:6060/debug/pprof/ for debugging purpose.

  3. FIX THE MEMORY LEAK IN ALL PREVIOUS RELEASES IN MARCH.(UPDATE: Mon Mar 13 12:54:50 UTC 2017). (修正三月早期版本存在的服务器端内存泄漏问题。13日晚9点重新上传。)#415 #417

  4. 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

累计优化

21 Feb 04:41
Compare
Choose a tag to compare
  1. eliminate spurious wake up of writeable events.
  2. eliminate atomic stalls when no snmp info needs update for each interval.
  3. 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

18 Feb 04:23
Compare
Choose a tag to compare
  1. golang 1.8 stable recompile
  2. add -scavengettl to client to force teardown expired connections.
  3. 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

20 Jan 08:50
Compare
Choose a tag to compare
  1. 只使用session定时器,避免kcp_update的thresh抖动。
  2. rto计算中的clock granularity设置为 interval值。
  3. 去掉rtomin的硬性限制。
  4. 对于单个数据包中的所有ack,只使用最后一个ack计算rto。
  5. -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

17 Jan 07:59
Compare
Choose a tag to compare
  1. ack结构中更准确的RTT估算。
  2. 锁优化,更平滑的rtt计算jitter。

2f11f13
xtaci/smux@d1bdf08
xtaci/kcp-go@86aa2c9

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问题优化等

14 Jan 12:18
Compare
Choose a tag to compare
  1. 客户端默认窗口值(-rcvwnd)降为512。
  2. smux锁优化。
  3. kcp-go锁优化。
  4. 更准确的数据包时间(更准确的RTT估算)。
  5. 缓解Buffered Chan 引起的BufferBloat,降低重传率。
  6. 修正一个kcp-go可能引起死锁的问题。
  7. snappy压缩切换为golang官方版本。
  8. 使用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

累计更新

12 Jan 14:02
Compare
Choose a tag to compare
  1. 客户端默认窗口值(-rcvwnd)降为512。
  2. smux锁优化。
  3. kcp-go锁优化。
  4. snappy压缩切换为golang官方版本。
  5. 使用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

累计更新

22 Dec 12:27
Compare
Choose a tag to compare
  1. 修正客户端Accept超过可打开文件数时crash的问题。
  2. 增加--snmplog --snmpperiod选项,输出SNMP日志。
  3. 微调kcp-go中的快速重传部分,减少RepeatSegs。
  4. 采用go1.8beta2编译。

$ go version
go version go1.8beta2 darwin/amd64

MD5 (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