Skip to content

Releases: xtaci/kcptun

the missing encryption algorithms #2

20 Aug 07:17
Compare
Choose a tag to compare

added support for salsa20 , twofish , xtea cryptos.
P.S. salsa20 is really lighting fast.

(Update@21:16 0820: hashicorp/yamux#39, try to fix i/o deadline problem)

Benchmarks:

$ go test -bench . -run=^$
BenchmarkAES128-4         200000         11174 ns/op
BenchmarkAES192-4         100000         12647 ns/op
BenchmarkAES256-4         100000         13452 ns/op
BenchmarkTEA-4             50000         26966 ns/op
BenchmarkSimpleXOR-4     3000000           432 ns/op
BenchmarkBlowfish-4        30000         48540 ns/op
BenchmarkNone-4         20000000           108 ns/op
BenchmarkCast5-4           30000         59313 ns/op
BenchmarkTripleDES-4        2000        856720 ns/op
BenchmarkTwofish-4         20000         66519 ns/op
BenchmarkXTEA-4            20000         77909 ns/op
BenchmarkSalsa20-4        300000          4980 ns/op
PASS
ok      github.com/xtaci/kcp-go 23.007s
MD5 (kcptun-linux-amd64-20160820.tar.gz) = 93ed244cc735dcf8539795e2879760e5
MD5 (kcptun-linux-386-20160820.tar.gz) = 92e89dbfc3cbbe83e5224d0850df654f
MD5 (kcptun-darwin-amd64-20160820.tar.gz) = 94687e4562393b82b26ed4f6d8df3721
MD5 (kcptun-darwin-386-20160820.tar.gz) = 6bbd5b4a7f5c0fd57c4968cb8fd2c907
MD5 (kcptun-windows-amd64-20160820.tar.gz) = 06f0c25545444b098b384375929e53ea
MD5 (kcptun-windows-386-20160820.tar.gz) = 12d916d02dfdd74dbf7a5e8bf713ad14
MD5 (kcptun-freebsd-amd64-20160820.tar.gz) = 9377cf860db447326d0e9a705065c285
MD5 (kcptun-freebsd-386-20160820.tar.gz) = 6478f51603aca99989a93d7300c695aa
MD5 (kcptun-linux-arm-20160820.tar.gz) = a8a61fb874c55631696faa5fd38e85a0

the missing encryption algorithms

19 Aug 05:30
Compare
Choose a tag to compare
  1. add support for blowfish, cast5, 3des encryption algorithms
  2. change yamux keepalive timeout to 10s
MD5 (kcptun-linux-amd64-20160819.tar.gz) = 623d6e4805514a85490533b43006893c
MD5 (kcptun-linux-386-20160819.tar.gz) = 9989faf00b59009e27b26c4059211709
MD5 (kcptun-darwin-amd64-20160819.tar.gz) = 46b3fbfe4c470b27d385169c37deb57f
MD5 (kcptun-darwin-386-20160819.tar.gz) = 56e01abc72997bc9de27bb39c3cb6396
MD5 (kcptun-windows-amd64-20160819.tar.gz) = 54d440a02beede900816a17c48e3abc2
MD5 (kcptun-windows-386-20160819.tar.gz) = c8a05265b854b7f79008008f3f3f546a
MD5 (kcptun-freebsd-amd64-20160819.tar.gz) = ff36cae4b4a10b1bd9b72bd6586bb67d
MD5 (kcptun-freebsd-386-20160819.tar.gz) = e07e9233fb2f79acf9a214b531afe80b
MD5 (kcptun-linux-arm-20160819.tar.gz) = 1d884fc64a6392d53b05fe874b6f9d22

re-compiled with golang 1.7 stable

16 Aug 08:49
Compare
Choose a tag to compare

re-compiled with golang 1.7 stable.
add aes-128, aes-192 encryptions.

golang 1.7 稳定版重制。
增加 aes-128, aes-192加密

(Update 20160818: revert a minor unstable changes, if you feel something strange, please re-download. )

MD5 (kcptun-linux-amd64-20160816.tar.gz) = 52cd6456b54cce01627e629767dc9deb
MD5 (kcptun-linux-386-20160816.tar.gz) = 20573d91391e38f48e97f32f0ffc8a34
MD5 (kcptun-darwin-amd64-20160816.tar.gz) = d0b272376029f9ae518ae05ff0afb727
MD5 (kcptun-darwin-386-20160816.tar.gz) = 9acc1ad52c335fe7f04c967d10104b1c
MD5 (kcptun-windows-amd64-20160816.tar.gz) = a2c5563ab2053976441d5a7bbffa98c2
MD5 (kcptun-windows-386-20160816.tar.gz) = f709eb7c813b586a5fdb24ee07e31df0
MD5 (kcptun-freebsd-amd64-20160816.tar.gz) = 0b3417ffc9c4ff418a14a0f76871338e
MD5 (kcptun-freebsd-386-20160816.tar.gz) = 9e367205d268a51794ce5e3310584c53
MD5 (kcptun-linux-arm-20160816.tar.gz) = 16ffab9f9a0084ae4141a9648e4b2cfc

Smooth dataflow curve & Half CPU usage for client

11 Aug 05:32
Compare
Choose a tag to compare

_(Strongly Recommended for upgrading)_

  1. Smooth dataflow curve by setting MaxStreamWindowSize to sockbuf(hidden).
  2. Half CPU usage by using recv() syscall instead of recvfrom() syscall. (client only)

_(强烈建议升级)_

  1. 设置MaxStreamWindowSize 值为 sockbuf(隐),以期望平滑数据传输曲线。
  2. 调整UDP接收的系统调用,recvfrom() 改为 recv(),降低客户端CPU消耗(一半以上)。

改之前:
before

改之后:
after

_compiler: go version go1.7rc6 darwin/amd64_

MD5 (kcptun-linux-amd64-20160811.tar.gz) = 976250b8e44c696bd5c0a66a9c274067
MD5 (kcptun-linux-386-20160811.tar.gz) = 623c9d5ed4ace14dba17401e51bd3c79
MD5 (kcptun-darwin-amd64-20160811.tar.gz) = 5f6f642be0c202960faf0b22abe09b64
MD5 (kcptun-darwin-386-20160811.tar.gz) = 0f8f7bf8461f801616d50db685aad496
MD5 (kcptun-windows-amd64-20160811.tar.gz) = eeaea3dece0d0ab515676d959075e100
MD5 (kcptun-windows-386-20160811.tar.gz) = 5708b35642658c818d773c5c3ba8a857
MD5 (kcptun-freebsd-amd64-20160811.tar.gz) = 79b48193147100497944493832be62d6
MD5 (kcptun-freebsd-386-20160811.tar.gz) = 774f9454d44e5141340b5dcdb2cf95c3
MD5 (kcptun-linux-arm-20160811.tar.gz) = c2584fad1e76d3ede74b23cf33bc96d9

mips32 version: https://github.com/bettermanbao/openwrt-kcptun/releases

Cumulative Non-Critical Updates

09 Aug 02:19
Compare
Choose a tag to compare

Updates(20160808):

  • Add hidden parameters
    • sockbuf: send/recv buffer size of udp sockets, default to 4MB.(macOS limit, pre: 16MB.)
    • keepalive: NAT keepalive interval(in seconds) to prevent your router from removing port mapping, default to 10s.(pre:5s.)
  • Optimized Algorithms:
    • If TX queue is not empty, ping packet is unnecessary to fire.
    • FEC search range is more precise.
    • PAWS detection is not required in markData() of FEC.
    • CLI parameters are parsed only once after startup. (provided by @buaazp)
    • _Explicitly dereference data immediately, hopefully this would lower memory usage. (Update: 20160809)_
    • _Do not update RTT for recovered packets from FEC. (Update: 20160810)_
  • API optimize
    • Listener has it's own SetDSCP() function.

累计非关键更新(20160808):

  • 增加隐藏参数
    • sockbuf:用于调整udp socket的收发缓冲区大小, 默认值为4MB。(macOS限制, 前值为16MB。)
    • keepalive:用于调整NAT keepalive的间隔时间,避免路由器清除端口映射。(默认值10s, 前值5s。)
  • 优化的算法:
    • 如果传输队列非空,则不需要发送ping包。
    • FEC更精确的搜索范围。
    • FEC的markData()不需要检测PAWS。
    • 启动后只解析一次命令行参数。(@buaazp提供)
    • _数据队列显式的去引用,希望能降低内存使用。(Update: 20160809)_
    • _RTT计算优化,不计入通过FEC纠错而来的RTT。(Update: 20160810)_
  • API优化
    • Listener实现独立的SetDSCP()函数。

_Compiler: go version go1.7rc6 darwin/amd64_

MD5 (kcptun-linux-amd64-20160808.tar.gz) = 067f9d34af47a46b34bae84aa7e2fc4b
MD5 (kcptun-linux-386-20160808.tar.gz) = 16bd01035c1237c2181042f1b1a3c761
MD5 (kcptun-darwin-amd64-20160808.tar.gz) = 2480f95c7a6c61ab6eb74d8fe0a27014
MD5 (kcptun-darwin-386-20160808.tar.gz) = ffc5c6873aabbc9816b593cb613560f1
MD5 (kcptun-windows-amd64-20160808.tar.gz) = 60dc203168c16818c27a9fd60d27b32a
MD5 (kcptun-windows-386-20160808.tar.gz) = a2378c9c5486ea470f005b51a1e49d99
MD5 (kcptun-freebsd-amd64-20160808.tar.gz) = 9c30d84b15efb82df18f3196aa64bde1
MD5 (kcptun-freebsd-386-20160808.tar.gz) = 6c7e0cdd2c413ac52c605b0f9d284528
MD5 (kcptun-linux-arm-20160808.tar.gz) = da983d001cd5731d3bb484020a24e4ea

improve network latency by introducing stream mode

25 Jul 12:20
Compare
Choose a tag to compare

_Update 20160726: recompiled with go1.7rc3 && optimize ikcp_send for stream mode_
_Update 20160803: recompiled with go1.7rc5_

_Strongly Recommended for Upgrading_

the default packet mode operations of kcp would introduce HOL-blocking for a single message; by eliminating message boundary with _stream mode_, this problem has relived.

kcp默认包模式的传输会引入单包的Head Of Line 阻塞问题,因此通过修改kcp,并在kcp-go中增加了stream模式缓解此问题,以降低网络延迟。(官方已同步)

MD5 (kcptun-linux-amd64-20160725.tar.gz) = 8c41e07356c50f970deb2c4a747f1b77
MD5 (kcptun-linux-386-20160725.tar.gz) = 6e3505cf52f90251ccbb0ce05fcb2bf3
MD5 (kcptun-darwin-amd64-20160725.tar.gz) = aee95702e65cff152951586acaa18f70
MD5 (kcptun-darwin-386-20160725.tar.gz) = 3d5b7781936556f995ed081e28235b7a
MD5 (kcptun-windows-amd64-20160725.tar.gz) = 756662eaf92d911223d856e00c9b8d2b
MD5 (kcptun-windows-386-20160725.tar.gz) = 7f9798166409da32c16af3de4e8618f6
MD5 (kcptun-freebsd-amd64-20160725.tar.gz) = 1c99e7dfc5d8d854e6ddab245d459514
MD5 (kcptun-freebsd-386-20160725.tar.gz) = e1e334f74601925d831693ae05acd15c
MD5 (kcptun-linux-arm-20160725.tar.gz) = 69cb70c1051e8502896b6192b40c2750

fix for macOS Sierra(10.12)

19 Jul 16:03
Compare
Choose a tag to compare

see issue:
golang/go#16272

_(if you are not macOS Sierra(10.12) user, you don't need to upgrade to this one.)_
_(compiler:go version go1.7rc2 darwin/amd64)_

MD5 (kcptun-linux-amd64-20160719.tar.gz) = e662553cc2ebb1d47e90b4fe2154c02b
MD5 (kcptun-linux-386-20160719.tar.gz) = 765de2a1e9f8f301eba6ba00e4aeb29f
MD5 (kcptun-darwin-amd64-20160719.tar.gz) = b7d96aa30d0849652df2ff6036d9bb3e
MD5 (kcptun-darwin-386-20160719.tar.gz) = dc6d0a0cbeb865d491319a1f37ccb68b
MD5 (kcptun-windows-amd64-20160719.tar.gz) = bd77b5a11c29283e162343c35fd34a07
MD5 (kcptun-windows-386-20160719.tar.gz) = eb8e30bbbc506d2a8074e387a6c8ac70
MD5 (kcptun-freebsd-amd64-20160719.tar.gz) = 676f54bdb579d43752b203c034abd7a0
MD5 (kcptun-freebsd-386-20160719.tar.gz) = 08ed17b13b245c9bbcb13014d2ea9e16
MD5 (kcptun-linux-arm-20160719.tar.gz) = 684816b2b43bc05fa0f932862bf2b6f1

Limit max RTO backoff to 8xRTO

08 Jul 15:14
Compare
Choose a tag to compare

Limit max RTO backoff to 8xRTT.
限定RTO退让的最大值为8xRTT,修正假死问题。

_update 20160712: recompiled with go version go1.7rc1 darwin/amd64_

MD5 (kcptun-linux-amd64-20160701.tar.gz) = 3c55407a1c413677454c8620b384e71d
MD5 (kcptun-linux-386-20160701.tar.gz) = 395c33fca9d7d1f9474c7af47567221f
MD5 (kcptun-darwin-amd64-20160701.tar.gz) = d44508e3dc46ce82ab3cdabdf10ba3d8
MD5 (kcptun-darwin-386-20160701.tar.gz) = f21236c12e6d11aa03cc84f62abf5e81
MD5 (kcptun-windows-amd64-20160701.tar.gz) = 425d0b63e82bad5c84683c4fb3a35edf
MD5 (kcptun-windows-386-20160701.tar.gz) = 0972e5e3d637cd9ced8038e77adb9580
MD5 (kcptun-freebsd-amd64-20160701.tar.gz) = 524c0b1f1500e6ac81e38adc6422acb1
MD5 (kcptun-freebsd-386-20160701.tar.gz) = 74110c946da7dcf668720bc1e66e9a3c
MD5 (kcptun-linux-arm-20160701.tar.gz) = 00ce4b3a8dd4ff6c7e93db41172fa236

Compression with Snappy (The first compression enabled release)

27 Jun 02:38
Compare
Choose a tag to compare

_CAUTION: NOT COMPATIBLE WITH PREVIOUS RELEASES WITH DEFAULT SETTINGS._

_MAKE SURE TO VERIFY YOUR MD5 HASH BEFORE DEPLOY._
_STRONGLY RECOMMENDED FOR UPGRADING._

  1. Add google snappy compression for transport layer to _accelerate_ data transfer(_enabled by default_) , use -nocomp on both side to disable.
  2. Compression has no effect on _already encrypted_ data stream.

_注意:默认与以前版本不兼容(两端需同时升级)_

_部署之前请务必确认您的MD5哈希值_
_强烈建议升级_

  1. 使用google snappy算法对传输层做数据流压缩(_默认开启),_用于加速数据传输
  2. 注意: 对于承载的数据**已经加密的**,没有明显效果。
MD5 (kcptun-linux-amd64-20160627.tar.gz) = 798cc5a4914211b69be8cc96abb86fcc
MD5 (kcptun-linux-386-20160627.tar.gz) = 754e7730e093c4fabe1304b9e151d462
MD5 (kcptun-darwin-amd64-20160627.tar.gz) = 8ba19a3e97a4647d52bf3eed95e871f4
MD5 (kcptun-darwin-386-20160627.tar.gz) = ae59addb1396f6c1f9e4a408213dd6ef
MD5 (kcptun-windows-amd64-20160627.tar.gz) = 533515d5f76ae8a3fabe2c04dee2964f
MD5 (kcptun-windows-386-20160627.tar.gz) = dfe6147c6dc54b322783254dc3e7f9c0
MD5 (kcptun-freebsd-amd64-20160627.tar.gz) = 1ae4d95309cbd2130addcf534edf95d6
MD5 (kcptun-freebsd-386-20160627.tar.gz) = 5f0769b7ace930245ef72313110750ea
MD5 (kcptun-linux-arm-20160627.tar.gz) = 7e1feb9282e563ff9f81f0c09bf635e8

SNMP Millstone Version

07 Jun 10:14
Compare
Choose a tag to compare

_compiler: go version go1.7beta1 darwin/amd64_
_MAKE SURE TO VERIFY YOUR MD5 HASH BEFORE DEPLOY_
_EVERYONE IS SUGGESTED TO UPGRADE_

  1. Reduce memory usage by avoiding make on fec group
  2. Release freebsd binary version
  3. Expose SetNoDelay() function for future manual control
  4. Add SNMP to dump information, kill -SIGUSR1 pid to print
  5. Pipeline ReadFromUDP() for faster receiving of UDP Packets
  6. Fix parse_ack() for _too many fast resend_
  7. Adjust yamux max window size for better streaming of UHD video
  8. _Randomize_ ping packet length and content
  9. Add hidden parameters for manual control of SetNoDelay(), eg:
    -mode manual -nodelay 1 -resend 3 -nc 1 -interval 20
MD5 (kcptun-linux-amd64-20160605.tar.gz) = 3c7e47aa8fde34ef7271e260e674c41e
MD5 (kcptun-linux-386-20160605.tar.gz) = 2e5a96591126b3084fe1054c3de292a2
MD5 (kcptun-darwin-amd64-20160605.tar.gz) = c946a76c1fe88dcfa1f6c452ca3a6474
MD5 (kcptun-darwin-386-20160605.tar.gz) = 514635cc598f1fb3b960aa088648f3d9
MD5 (kcptun-windows-amd64-20160605.tar.gz) = d0b3f3795f135525eb98f891f77029f2
MD5 (kcptun-windows-386-20160605.tar.gz) = b57fd1f2c06432bfed48581976604e67
MD5 (kcptun-freebsd-amd64-20160605.tar.gz) = 357368fbd2a569daed17ce525f724442
MD5 (kcptun-freebsd-386-20160605.tar.gz) = 5735fac9d03850a0bca4df761fc2d272
MD5 (kcptun-linux-arm-20160605.tar.gz) = b2c4678cd03e0d138f783e0c03b71733