kcptun

A Stable & Secure Tunnel based on KCP with N:M multiplexing and FEC. Available for ARM, MIPS, 386 and AMD64。N:M 多重化と FEC を備えた KCP に基づく安定した安全なトンネル。 N:M 다중화 및 FEC를 사용하는 KCP 기반의 안정적이고 안전한 터널입니다. Un tunnel stable et sécurisé basé sur KCP avec multiplexage N:M et FEC.

MIT License

Downloads
31
Stars
13.7K
Committers
19

Bot releases are hidden (Show)

kcptun - optimizations on -tcp option for linux

Published by xtaci over 5 years ago

  1. support -tcp option for linux(EXPERIMENTAL) . To enable tcp transmission, you should enable it on both client and server, supported only under LINUX with iptables, require root privilege.

  2. fix a potential race between cleaner() goroutine and WriteTo()

discussion on this release:
https://github.com/xtaci/kcptun/issues/696

$ go version
go version go1.12.7 linux/amd64

$ uname -a
Linux DESKTOP-7FL7RC4 4.4.0-18362-Microsoft #1-Microsoft Mon Mar 18 12:02:00 PST 2019 x86_64 x86_64 x86_64 GNU/Linux

$ shasum *.tar.gz
763b43bce8d34c586af0884794d7aac7e2e9bf0d  kcptun-darwin-amd64-20190717.tar.gz
db735672cb10b5a2958d52429bc7afab175b047e  kcptun-freebsd-amd64-20190717.tar.gz
c95d9bb6117289b195401fc2e1b6a1d2ae7a3828  kcptun-linux-386-20190717.tar.gz
834498340bfcf6d3bcaa1cb3b2d9dd6b969353fb  kcptun-linux-amd64-20190717.tar.gz
de131900a1d7efb5299d7050c68a7877d721042c  kcptun-linux-arm5-20190717.tar.gz
34b15b668bc1c20d11a3545f8b8d53900796e3b7  kcptun-linux-arm6-20190717.tar.gz
3ca2abec040c11af1c59ddcb45c23e90840006a0  kcptun-linux-arm64-20190717.tar.gz
5d481cbe3e09009056e8c9bf2443cd3ae2995e10  kcptun-linux-arm7-20190717.tar.gz
53e030e7594905cba846d2a271035f6fe757f478  kcptun-linux-mips-20190717.tar.gz
3d2449b1b56be927446edd6a3aaabb1523552fd1  kcptun-linux-mipsle-20190717.tar.gz
ad92a7f49ac94d89583b32a8b874b9e68532b129  kcptun-windows-386-20190717.tar.gz
0bf62af3a6af3ea271310dbc57ad9679f94bcb4d  kcptun-windows-amd64-20190717.tar.gz

$ date
Wed Jul 17 15:55:36 CST 2019
kcptun - optimizations on -tcp option for linux

Published by xtaci over 5 years ago

  1. support -tcp option for linux(EXPERIMENTAL) . To enable tcp transmission, you should enable it on both client and server, supported only under LINUX with iptables, require root privilege.

discussion on this release:
https://github.com/xtaci/kcptun/issues/696

$ go version
go version go1.12.7 darwin/amd64

$ uname -a
Darwin xtacideMacBook-Pro.local 18.6.0 Darwin Kernel Version 18.6.0: Thu Apr 25 23:16:27 PDT 2019; root:xnu-4903.261.4~2/RELEASE_X86_64 x86_64

$ shasum *.tar.gz
023aea9a77a06c36413f78f3ff96a153da1f28b5  kcptun-linux-amd64-20190716.tar.gz
069cef75d5522f127f0f7d979ccb9538137ada66  kcptun-darwin-amd64-20190716.tar.gz
6b494a14e44bea9f07c0d8f5793ca7ff7efea297  kcptun-windows-amd64-20190716.tar.gz
8615af8b73d7d9860de03c601befdc08e312f6e0  kcptun-freebsd-amd64-20190716.tar.gz
b939aec4cfe6f1af5cb3d0d627fce79026a1e3cf  kcptun-linux-386-20190716.tar.gz
df97d2f77cdd605f732a403021ad698cbba295f3  kcptun-windows-386-20190716.tar.gz
1e462e4373d4e8d4d4354b22a0d269a2de7720b8  kcptun-linux-arm5-20190716.tar.gz
848a1fbcfeda301ae66966e42124385252dccb7f  kcptun-linux-arm6-20190716.tar.gz
12ad0ee691926835c80b73b7f836ca70ef806d3e  kcptun-linux-arm7-20190716.tar.gz
5ad6e08b1b99f934fe257c5edec41f6b68031af7  kcptun-linux-arm64-20190716.tar.gz
4ddb9d41e60ccdd8aa8fdf1496a30470d36af6d9  kcptun-linux-mipsle-20190716.tar.gz
127c1956a885581d082a8f69eecb146c62b6cd2a  kcptun-linux-mips-20190716.tar.gz

$ date
2019年 7月16日 星期二 17时00分26秒 CST
kcptun - support `-tcp` option for linux

Published by xtaci over 5 years ago

  1. support -tcp option for linux(EXPERIMENTAL) . To enable tcp transmission, you should enable it on both client and server, supported only under LINUX with iptables, require root privilege.

discussion on this release:
https://github.com/xtaci/kcptun/issues/696

$ go version
go version go1.12.7 darwin/amd64

$ uname -a
Darwin xtacideMacBook-Pro.local 18.6.0 Darwin Kernel Version 18.6.0: Thu Apr 25 23:16:27 PDT 2019; root:xnu-4903.261.4~2/RELEASE_X86_64 x86_64

$ shasum *.tar.gz
cdcd760628b82420c231c132bec91fb4bae6ed1a  kcptun-linux-amd64-20190715.tar.gz
b664b8dbfca78b33beeaac20acda595ce4ecc76a  kcptun-darwin-amd64-20190715.tar.gz
1d2db7b5c27e8a93d53d8d319665ea5b5faa8e34  kcptun-windows-amd64-20190715.tar.gz
7a824478c80fe00d0372c8e35367d83d5ce1750c  kcptun-freebsd-amd64-20190715.tar.gz
d712bf429dd3bd41338a55f88db952e0ae64bfec  kcptun-linux-386-20190715.tar.gz
f99e5a26f519557c3758495a6823120502068b5b  kcptun-windows-386-20190715.tar.gz
dce06f556d62584f1b9344d2af4710cb35ba384f  kcptun-linux-arm5-20190715.tar.gz
d31f7e6531ac67d87fcc09916f6bed64c1b08bec  kcptun-linux-arm6-20190715.tar.gz
f8988e747d4f5237a928966796b6a839960ac3ad  kcptun-linux-arm7-20190715.tar.gz
054b157601fd83da4032334131a4a89fe2558052  kcptun-linux-arm64-20190715.tar.gz
94ed697dbe05fdc7302da4a4517bdd054057b0ab  kcptun-linux-mipsle-20190715.tar.gz
2e43796922390c7f4022611f791bdd9d3d45b207  kcptun-linux-mips-20190715.tar.gz

$ date
2019年 7月15日 星期一 14时00分05秒 CST```
kcptun - support `-tcp` option for linux

Published by xtaci over 5 years ago

  1. support -tcp option for linux(EXPERIMENTAL) . To enable tcp transmission, you should enable it on both client and server, supported only under LINUX with iptables, require root privilege.

discussion on this release:
https://github.com/xtaci/kcptun/issues/696

$ go version
go version go1.12.7 linux/amd64

$ uname -a
Linux DESKTOP-7FL7RC4 4.4.0-18362-Microsoft #1-Microsoft Mon Mar 18 12:02:00 PST 2019 x86_64 x86_64 x86_64 GNU/Linux

$ shasum *.tar.gz
89beb1c88422d6a73b6693f07290063f2fddf76d  kcptun-linux-amd64-20190714.tar.gz
ea7219013ee7df42b431add0908f3c453d0d2108  kcptun-darwin-amd64-20190714.tar.gz
49ae80d62d2d68001a04dac3272de08985d7001c  kcptun-windows-amd64-20190714.tar.gz
18a7310ad1da92fc5b35ab9d03a8c5985618fe41  kcptun-freebsd-amd64-20190714.tar.gz
b01221824e794bcd3f26246ea0c3af36649a2651  kcptun-linux-386-20190714.tar.gz
8faf525b847cda5c0f1022f1b496a2ecec770bd5  kcptun-windows-386-20190714.tar.gz
ba7f56218aa7ee3624aa839bf73a6217b87111a8  kcptun-linux-arm5-20190714.tar.gz
71f8830ee8a5b81006c3727e8d8237acd4ff2c5e  kcptun-linux-arm6-20190714.tar.gz
c5c63a1e6f713c40368c41e670b59415ad725079  kcptun-linux-arm7-20190714.tar.gz
2fea43afbfe6eb133d8633042d33aca42e3a042a  kcptun-linux-arm64-20190714.tar.gz
bdf95340c0bda0b940c0e35ed1d97f56062c6413  kcptun-linux-mipsle-20190714.tar.gz
2abf7c0fda32da7df277c9f0a80a71f5d38fca05  kcptun-linux-mips-20190714.tar.gz

$ date
Sun Jul 14 18:31:42 CST 2019
kcptun - bugfix for old linux kernel

Published by xtaci over 5 years ago

  1. bugfix for issue: https://github.com/xtaci/kcptun/issues/686
  2. verbose stream logging
$ go version
go version go1.12.5 linux/amd64

Build Log:

$ uname -a
Linux DESKTOP-7FL7RC4 4.4.0-18362-Microsoft #1-Microsoft Mon Mar 18 12:02:00 PST 2019 x86_64 x86_64 x86_64 GNU/Linux

$ shasum *.tar.gz
3c406d8b47c39ddfe5c3fa87c0c5d37edd1cba1c  kcptun-darwin-amd64-20190611.tar.gz
471a80b7d8d9b781f94ce97e4036bdbc480960f9  kcptun-freebsd-amd64-20190611.tar.gz
f3edab217bb0e21e5c760f391701b1a8f3d76d92  kcptun-linux-386-20190611.tar.gz
cdd7340409c67ef779912b98f13a637a0c5723d1  kcptun-linux-amd64-20190611.tar.gz
f1150f7220ba7bf29e4527fa5766186449d61e7a  kcptun-linux-arm5-20190611.tar.gz
31cdbccdc9ae8e32f79e3128146aebe3b49cab7b  kcptun-linux-arm6-20190611.tar.gz
5a26953f89ab2fc6d1e035c32701fdb332c38e06  kcptun-linux-arm64-20190611.tar.gz
0412a021233454dae44ade859d54c2e70234c984  kcptun-linux-arm7-20190611.tar.gz
7f32e7d341708bf4d6982b7a2f9e43679c3beed6  kcptun-linux-mips-20190611.tar.gz
d4593b568921a93be73b747170421be8d417f1ea  kcptun-linux-mipsle-20190611.tar.gz
1c267a990d626c75e7ce1e667dcb8027ef041772  kcptun-windows-386-20190611.tar.gz
6adc6f344434af4f8c3086ff7e1e1b30c7329b5e  kcptun-windows-amd64-20190611.tar.gz
kcptun - sendmmsg

Published by xtaci over 5 years ago

  1. less memory usage in smux
  2. less memory usage in kcptun bi-directional copy
  3. sendmmsg() is enabled in linux distributions, sending batch data will be efficient.
$ go version
go version go1.12.5 darwin/amd64

SHA1SUM

$ ./build-release.sh
If you need reproducible build, export GO111MODULE=on first
905843f836cc728bef26e741abbf01bf64b73060  kcptun-linux-amd64-20190515.tar.gz
85c3f72eda6f0fb28d0b250217966611fb03fb4f  kcptun-darwin-amd64-20190515.tar.gz
01acbe909febb3796e9b7a72958cb40202fec798  kcptun-windows-amd64-20190515.tar.gz
8e6ca70045de756cb9b2b51081f974e34b4eb366  kcptun-freebsd-amd64-20190515.tar.gz
dc024a3a6057675bc3d3fb8472e77a7f8c4ab875  kcptun-linux-386-20190515.tar.gz
1ad7595f096c9b5c3e517f57d819d8892f02dcf3  kcptun-windows-386-20190515.tar.gz
75de02895f1da60e42e1dac488ec3165c58ec3d7  kcptun-linux-arm5-20190515.tar.gz
f834cf62fc03c4739944ace27dd9a78e21b6a17e  kcptun-linux-arm6-20190515.tar.gz
05de1c81af18c4f6968c71ea20d706a075be960b  kcptun-linux-arm7-20190515.tar.gz
9855d59dd270a47a7d5d34ed680b369ed5377509  kcptun-linux-arm64-20190515.tar.gz
faacdef226fe1fbfa0914f7fdc0eed0ad4ebb8ca  kcptun-linux-mipsle-20190515.tar.gz
fb754ae7f98cd4fc2081645b006faf14f95a7915  kcptun-linux-mips-20190515.tar.gz
kcptun - Less memory usage

Published by xtaci over 5 years ago

  1. Less memory usage and smarter slice operations
$ go version
go version go1.12.4 darwin/amd64

SHA1SUM

$ shasum *.tar.gz
885f31171c580cf5b950b84f6ae87b4d95f71e8f  kcptun-darwin-amd64-20190428.tar.gz
395dffa2dbf75e28d33c743ab6a0be6b53c8a169  kcptun-freebsd-amd64-20190428.tar.gz
d9ca1c85e36844ea991747cb8c9ce0597b2e3eb2  kcptun-linux-386-20190428.tar.gz
d31b2b9e20e9234083d2b03645f03ec63e6590c8  kcptun-linux-amd64-20190428.tar.gz
3fa494ab55bc3b237880496284f0910776f6bd34  kcptun-linux-arm5-20190428.tar.gz
01a77ca76dcc5de9e1ed68bf1b605fcf65f14d78  kcptun-linux-arm6-20190428.tar.gz
59cc155c9a85f3be99ec89f77fa42a736e700c8d  kcptun-linux-arm64-20190428.tar.gz
ea696d22aa277fb1d2a2f63132d66f30ee86abb7  kcptun-linux-arm7-20190428.tar.gz
66053b3095b1614e64fcfa6fa955758a9a940e16  kcptun-linux-mips-20190428.tar.gz
341386c35061b88bdc2a15b6e760236baf475744  kcptun-linux-mipsle-20190428.tar.gz
0d0aa0407ff6c71818240c3441fd1437ff853a44  kcptun-windows-386-20190428.tar.gz
528c34f65cbcbd5e1d9d0b75e642a85e073afef8  kcptun-windows-amd64-20190428.tar.gz
kcptun - UDP receiving optimization for linux-based system

Published by xtaci over 5 years ago

  1. Read() optimization for linux-based system by exploiting recvmmsg syscall in kcp-go, receiving incoming packets will be faster under heavy load. (linux kernel >= 2.6.33)
  2. Memory optimization in smux, abandoned bytes.Buffer for it's over-allocation, memory usage will be MUCH less.
$ go version
go version go1.12.4 darwin/amd64

SHA1SUM

$ shasum *.tar.gz
10021608d8aad592534839ad305c7958f0ab8994  kcptun-linux-amd64-20190424.tar.gz
dc2bf8e0a5f3ce538422e34e77710bd9db46e40a  kcptun-darwin-amd64-20190424.tar.gz
243763e44411ede3a6ee4f7abcc8214bc31b5e5d  kcptun-windows-amd64-20190424.tar.gz
6ab10ee9ba542fdde4e419abe37828a66243ec08  kcptun-freebsd-amd64-20190424.tar.gz
c2c402664d80772889d8ac0c210d5795a2f04cd1  kcptun-linux-386-20190424.tar.gz
258394c58e09b423f08d2a7f4c1d2e1635f0f464  kcptun-windows-386-20190424.tar.gz
6e016c968b8ac3aac1abb62b7d8c4b77293d8fcf  kcptun-linux-arm5-20190424.tar.gz
ca4f4acc4bbb9e385672ae74d9416a985cf77273  kcptun-linux-arm6-20190424.tar.gz
a254455b098d68b2962591aeb65cc4667b7d7312  kcptun-linux-arm7-20190424.tar.gz
ff04543c72fea6fc48bef28172888b4d948a0ee0  kcptun-linux-arm64-20190424.tar.gz
ff7d3476551f0b5866d295a8cf5d3c37c0864373  kcptun-linux-mipsle-20190424.tar.gz
e973781ad8f58c6a92f84527e35b92f29944299c  kcptun-linux-mips-20190424.tar.gz
kcptun - Bugfix in smux relates to "broken pipe"

Published by xtaci over 5 years ago

  1. Bugfix in smux relates to "broken pipe": https://github.com/xtaci/smux/issues/48

Users using 0409 , 0416 should upgrade to this one, or you will face frequent "broken pipe"

$ go version
go version go1.12.4 darwin/amd64

SHA1SUM

$ shasum *.tar.gz
18470f581ffa07e2122d042054d40df776a4c95b  kcptun-darwin-amd64-20190418.tar.gz
d062022ac9ed7335b245ee60040b02ce75e47ced  kcptun-freebsd-amd64-20190418.tar.gz
e3507157654825d360dbfe5986718a5bd09df91e  kcptun-linux-386-20190418.tar.gz
b83394d5d693a7386147ad29332f4f64fbaee42b  kcptun-linux-amd64-20190418.tar.gz
363a859503bbbce962c55a1e1ca7ae9c5fa6eb01  kcptun-linux-arm5-20190418.tar.gz
afa128cbf98e04a5cf5fe198a1bda650d18e6ff1  kcptun-linux-arm6-20190418.tar.gz
5d5caa6728618fef813ce51628b3a680b261b2cc  kcptun-linux-arm64-20190418.tar.gz
f407aec963d89cdc56acc54a7d16f246b8386885  kcptun-linux-arm7-20190418.tar.gz
ed440a33fc32b4b70201131e42222a2892dc807b  kcptun-linux-mips-20190418.tar.gz
803ef4b4f4a3a8dd247cc9b4fd6e5a190b508004  kcptun-linux-mipsle-20190418.tar.gz
ec7bc4072314e114f0a5c2adcd84d91f0467eeba  kcptun-windows-386-20190418.tar.gz
59ca23e8b5c554ae7d6ff20ecdb636ce58127ac3  kcptun-windows-amd64-20190418.tar.gz
kcptun - Prevent RS decoder from allocating new bytes slice

Published by xtaci over 5 years ago

  1. Prevent RS decoder from allocating new []byte, would be faster while decoding incoming packets.
$ go version
go version go1.12.1 darwin/amd64

SHA1SUM

812401099faaa2b8fa07ba66f87eaa9e29d07a39  kcptun-darwin-386-20190401.tar.gz
a950337ba1eb555b6e62e4d66932db23e524d1d7  kcptun-darwin-amd64-20190401.tar.gz
e0c14c06b9a9eeae657d285c2fda597f99dc1b46  kcptun-freebsd-386-20190401.tar.gz
2e7de54cbd1fbefa58f7c4a4b944813f4bf33347  kcptun-freebsd-amd64-20190401.tar.gz
ba99f0a5a988e06cc04796adb269058404b61861  kcptun-linux-386-20190401.tar.gz
5da71b643316fc3bf79d258f411862f7487f049e  kcptun-linux-amd64-20190401.tar.gz
2fdd7b2e243c0cfb50d7e3b4166cde976af0a8c7  kcptun-linux-arm-20190401.tar.gz
341c087b0caee9cb3e060191ab8d79a30f402513  kcptun-linux-mips-20190401.tar.gz
6f4c1bb04d1227469945ffc0a0ba2e2f4773043a  kcptun-linux-mipsle-20190401.tar.gz
575be785f781ae7245adcbbe7f456ccd620b65fd  kcptun-windows-386-20190401.tar.gz
30ef4ffbbb4586c2bfa193373e600048ccb98d5c  kcptun-windows-amd64-20190401.tar.gz
kcptun - Allow access to `-smuxbuf` parameter for mitigation of HOLB

Published by xtaci over 5 years ago

  1. Allow access to -smuxbuf parameter for mitigation of HOLB
$ go version
go version go1.12.1 darwin/amd64

SHA1SUM

6e85775903235c113ee61bed9e48ad589fdc5843  kcptun-linux-amd64-20190325.tar.gz
c10dd0c60a375be863d11dec8722470a4046be59  kcptun-linux-386-20190325.tar.gz
5e2a2c7e296d28eb2fb8f604fb17eb3d1870e078  kcptun-darwin-amd64-20190325.tar.gz
d1e2f3d76226dc7f9791040698e495399cf2c622  kcptun-darwin-386-20190325.tar.gz
af031eaae5fbdb922858469ad8e3d5ddad694918  kcptun-windows-amd64-20190325.tar.gz
21274c01346992c613febb71c88438f96572805b  kcptun-windows-386-20190325.tar.gz
1b2c7232468e466f14abcadc0dd3d4dc00a794e2  kcptun-freebsd-amd64-20190325.tar.gz
8fd93ab7facf3af2c1659e86f80ccff3d7d842e3  kcptun-freebsd-386-20190325.tar.gz
22fd4fe4509426bd72ba750f6af759678387eac2  kcptun-linux-arm-20190325.tar.gz
d2669866130231da6245f888f7117fc5982dbcf7  kcptun-linux-mipsle-20190325.tar.gz
6e14a274c9c636f0cf0cfcb3bd44a4a68a915040  kcptun-linux-mips-20190325.tar.gz
kcptun - 1. Eliminated one memcpy in packet output

Published by xtaci over 5 years ago

  1. Eliminated one memcpy in packet output
$ go version
go version go1.12.1 darwin/amd64

SHA1SUM

20f5989b8764fa247078e0a4fff191894b795128  kcptun-darwin-386-20190321.tar.gz
a5eb14a4bae5c9854647020670965ae5f5627624  kcptun-darwin-amd64-20190321.tar.gz
0075c15a64959cf3f3474615e20544c64cb548e9  kcptun-freebsd-386-20190321.tar.gz
442dd119f4f38d3229c0a6c947b5867bc58fc423  kcptun-freebsd-amd64-20190321.tar.gz
ba5d85c0fbad927b2ff6d509abe25fc25d1ed0b1  kcptun-linux-386-20190321.tar.gz
6e2eec2a8a0cf9aeee5a8836ce83336553aaee0c  kcptun-linux-amd64-20190321.tar.gz
ccc8d802acfd04e11f1345b83ca0d3dcb3612599  kcptun-linux-arm-20190321.tar.gz
ce3d0dc2aecab76f04a962cf8da6ca5fc4644f8e  kcptun-linux-mips-20190321.tar.gz
23fd515306b5b783cb055ff3171e5812659b91f9  kcptun-linux-mipsle-20190321.tar.gz
5a6960219b0f137525fa50a219f98d0e778eac72  kcptun-windows-386-20190321.tar.gz
19169822f132cf12f61d25ae720854bdfdc68616  kcptun-windows-amd64-20190321.tar.gz
kcptun - More accurate retransmit

Published by xtaci almost 6 years ago

  1. More accurate retransmit, increased payload ratio, +2% on avg.
  2. Protection against packets from nowhere.
  3. Smarter handling of congestion window.

https://github.com/xtaci/kcp-go/commit/2e7567b77e575171a7e02d39f8358bb6fc5ebe8a
https://github.com/xtaci/smux/commit/6cf098d439391c8f8f6a485f8928f47575b6002e
https://github.com/xtaci/kcptun/commit/43a662772b7c1d5930d3472b1cbd769091d90b3c

$ go version
go version go1.11.4 darwin/amd64

SHA1SUM

1cb077f0ca3872b5c641d7780f133225dfa77c0d  kcptun-linux-amd64-20190109.tar.gz
847b2283d86afa728055927b696169003d89b05b  kcptun-linux-386-20190109.tar.gz
5a6ee1f6ac57688e2d67992c73e9cc98a67b2b58  kcptun-darwin-amd64-20190109.tar.gz
74a34e81ec495c3b20c44375aae4f3bdb7ddf612  kcptun-darwin-386-20190109.tar.gz
8558f701bb472d2a7bfcfd437f72ea7af1ef1043  kcptun-windows-amd64-20190109.tar.gz
a93b16a21d1feac2e8c2cc085533ddfdede0836e  kcptun-windows-386-20190109.tar.gz
c828c3455515e77c905d5d387d788d7373b2d271  kcptun-freebsd-amd64-20190109.tar.gz
f2e9ebbfcd2c69f24fe3b5659d04a366380df2c6  kcptun-freebsd-386-20190109.tar.gz
7d6294c618ef052f84a7d0272c720aebc456b2b5  kcptun-linux-arm-20190109.tar.gz
bcdceec0ede15af9e60816f6fdd51db255a4fff0  kcptun-linux-mipsle-20190109.tar.gz
fb1cdb27382cd8f3822fcedba1ca53230f271fd1  kcptun-linux-mips-20190109.tar.gz
kcptun - Faster handling of acknowledgements

Published by xtaci almost 6 years ago

Faster handling of ACK segments:

The complexity for handling data segment acknowledge changed from O(n) to O(1), good for routers.

https://github.com/xtaci/kcp-go/commit/46244179af43531926030233f5662b137367ca84
https://github.com/xtaci/smux/commit/6cf098d439391c8f8f6a485f8928f47575b6002e
https://github.com/xtaci/kcptun/commit/baf532e1b143525bc4ef845072b9e073f9d58be0

$ go version
go version go1.11.4 darwin/amd64

SHA1SUM

fcb173d5417a0a57c34b1d9e2d5e83876ee9c834  kcptun-linux-amd64-20190104.tar.gz
751dbfa0e1767c0a09b3029f18b40851f5d6929c  kcptun-linux-386-20190104.tar.gz
fb7abe28469fb28155cba99c5b875697855758c0  kcptun-darwin-amd64-20190104.tar.gz
dfea19daf6a158f14d1e81e466c87fcd64df9879  kcptun-darwin-386-20190104.tar.gz
cfcb6e56976656552a158d15402a66953edb6466  kcptun-windows-amd64-20190104.tar.gz
d78e6f788ffc1f9166ec09f43c53b663806dc7db  kcptun-windows-386-20190104.tar.gz
54b4dc3f72acd6a628633da84344183f983cf3b5  kcptun-freebsd-amd64-20190104.tar.gz
3f22186919255c76063104be7ee30693fc016353  kcptun-freebsd-386-20190104.tar.gz
173a88c5584fecfec9ca47408722b3c1ad5d8189  kcptun-linux-arm-20190104.tar.gz
6881f4befafde7d3d5af17bb12086e048efadc09  kcptun-linux-mipsle-20190104.tar.gz
8b5b1dbd87d7a90706f821e78c6d4dcc2977302d  kcptun-linux-mips-20190104.tar.gz
kcptun - experimental delayed condense on snd_buf

Published by xtaci almost 6 years ago

EXPERIMENTAL delayed condense on snd_buf.

potentially decreased CPU usage on client side.

major changes:
https://github.com/xtaci/kcp-go/commit/28a058e313410f5e1c6ce57ea8ea4c22a0556096

compile to v5.0.3

kcptun - Greatly increased payload ratio!!!

Published by xtaci almost 6 years ago

English:

  1. highly recommended for upgrade(on both sides)
  2. greatly decreased the ratio of RepeatSegs by stricter check of fastack.
  3. potentially increased effective transmission ratio.
  4. you'll be able to increase the -rcvwnd on client side for higher speed and less waste.
    (eg, client: -rcvwnd 2048)

中文:

  1. 建议升级到此版本(服务器+客户端)。
  2. 极大的降低了RepeatSegs的比例,修正了原协议中的一个重传判定BUG。
  3. 提高了有效传输数据比率。
  4. 此版本可以适当增大原有客户端的-rcvwnd参数以提高速度。

https://github.com/xtaci/kcp-go/commit/8b6efebcb995193f4775a8ab7658a8153e45190d
https://github.com/xtaci/smux/commit/6cf098d439391c8f8f6a485f8928f47575b6002e
https://github.com/xtaci/kcptun/commit/baf532e1b143525bc4ef845072b9e073f9d58be0

$ go version
go version go1.11.4 darwin/amd64

SHA1SUM

0fb7925be7ce2f2e443ce9d2fd50c3b4afad9ec0  kcptun-linux-amd64-20181230.tar.gz
47014863690319f482a27325500e3dcee7f968c3  kcptun-linux-386-20181230.tar.gz
9fe21a5bb35c569a73ce4afa40f25764c7b745cf  kcptun-darwin-amd64-20181230.tar.gz
47f5bd5b1ed09bb07d70fac85802bb5eb6beaa99  kcptun-darwin-386-20181230.tar.gz
e1650dcac210b6dca5aea2ceba6d8839af14e816  kcptun-windows-amd64-20181230.tar.gz
1ba5f0149a30186cceedc6106458db766efce15b  kcptun-windows-386-20181230.tar.gz
015119287ca4e82c194a4e4fe5653b9dbbb68e25  kcptun-freebsd-amd64-20181230.tar.gz
405cc681c51f9e871aadcba535084b1cc11d1319  kcptun-freebsd-386-20181230.tar.gz
c74acdeafea74c9c7aa02be2e3ae86296fcc7613  kcptun-linux-arm-20181230.tar.gz
3a489f17a30bb95a02f2ae15bfd15927fe26475d  kcptun-linux-mipsle-20181230.tar.gz
a1c0a2dba75e2f9d7a420404486a88fd46af4a32  kcptun-linux-mips-20181230.tar.gz
kcptun - improved steadiness in packets processing

Published by xtaci almost 6 years ago

  1. eliminated some halfway buffers, the processing of packets now acts like a stable stream processor, data copying and some context switches introduced jitters can be mitigated, especially for slow processors.

  2. potentially lowered memory consumption.

https://github.com/xtaci/kcp-go/commit/52ed292bb2aab5fcd695eb4428c540c28ea499a7
https://github.com/xtaci/smux/commit/6cf098d439391c8f8f6a485f8928f47575b6002e
https://github.com/xtaci/kcptun/commit/baf532e1b143525bc4ef845072b9e073f9d58be0

$ go version
go version go1.11.4 darwin/amd64

SHA1SUM

104ab95ab616eb6627afb86bf2a03103d2ef7849  kcptun-linux-amd64-20181226.tar.gz
1c14fd868aedf1dc9a3e0afce86b95725e34ad81  kcptun-linux-386-20181226.tar.gz
52b07cedadcc05a3cd5e06ef4cf18ed05f715749  kcptun-darwin-amd64-20181226.tar.gz
215f8f6fe2c8430046c8707b0a612ec867d149e1  kcptun-darwin-386-20181226.tar.gz
b132fe29b3d51a403fe945cdaab2769c8f555a7c  kcptun-windows-amd64-20181226.tar.gz
c1bf5bb5584b037124b771c0ff4d7a407dbe0127  kcptun-windows-386-20181226.tar.gz
eae9c0c0f7b87fb5e506ab68d0d97d8d6bd5a467  kcptun-freebsd-amd64-20181226.tar.gz
6a031c1cb60dee375a926ccd6919ae9f41cbad1f  kcptun-freebsd-386-20181226.tar.gz
74fd266a8d23cfdcf5ded16938a6c24269fea4a8  kcptun-linux-arm-20181226.tar.gz
a125a5a388adbff1f851690282172118bff31e1f  kcptun-linux-mipsle-20181226.tar.gz
2d10ec9aad746810d7839fe557b945d1442cf8da  kcptun-linux-mips-20181226.tar.gz
kcptun - xmas edition with minor updates

Published by xtaci almost 6 years ago

  1. avoid unnecessary data copying in repeated segments
  2. correct counting mistakes in RepeatSegs
  3. pin updater goroutine to thread for better locality

https://github.com/xtaci/kcp-go/commit/cf8866d47877d632d420f68ec6fedd7b4fe8094a
https://github.com/xtaci/smux/commit/6cf098d439391c8f8f6a485f8928f47575b6002e
https://github.com/xtaci/kcptun/commit/baf532e1b143525bc4ef845072b9e073f9d58be0

$ go version
go version go1.11.4 darwin/amd64

SHA1SUM

8cd35620dacdee3d2920e80e28619da0f243c18e  kcptun-linux-amd64-20181224.tar.gz
407e85f869cce017e71a4c119278aef25369860c  kcptun-linux-386-20181224.tar.gz
d3f04434017503518c44389780c16422b73fdfa1  kcptun-darwin-amd64-20181224.tar.gz
2bf967b1740c5a89532f4300751f472c3ab1c185  kcptun-darwin-386-20181224.tar.gz
fc801c0c761f4aae02dd2e0ade8ad2a742dc51a9  kcptun-windows-amd64-20181224.tar.gz
4d8167552ef0739270db813225adf0a1e9664f43  kcptun-windows-386-20181224.tar.gz
63fab1b9bd7d16cbce274a13c89ef21b0661dcde  kcptun-freebsd-amd64-20181224.tar.gz
96a01a5f601409a99494a8d0eb2c62ae66f866ad  kcptun-freebsd-386-20181224.tar.gz
a226a85492c6634fdd36082189034de8401491e0  kcptun-linux-arm-20181224.tar.gz
0c8f588f4cbcff5d751aca3c325f3f86b2d492e0  kcptun-linux-mipsle-20181224.tar.gz
dcaddb5fb8464464e344768c723b278d3120f41c  kcptun-linux-mips-20181224.tar.gz
kcptun - bugfix in kcp-go#106

Published by xtaci almost 6 years ago

bugfix in issue: https://github.com/xtaci/kcp-go/issues/106

https://github.com/xtaci/kcp-go/commit/02d11d20c5864d980168568741c0d52a50379512
https://github.com/xtaci/smux/commit/f19baee51e87c9f0d42f61380893caad7bfabf3d
https://github.com/xtaci/kcptun/commit/baf532e1b143525bc4ef845072b9e073f9d58be0

$ go version
go version go1.11 darwin/amd64

SHA1SUM

5d0cfb655e3ddd004f00e798d0aa802b22e88702  kcptun-linux-amd64-20181114.tar.gz
e23c1fc48ccea427ebf1a4bf067044f910d40d20  kcptun-linux-386-20181114.tar.gz
e177d7c167e7e87d1e6748e5ab819ddf38dc4e5e  kcptun-darwin-amd64-20181114.tar.gz
0011faf0db1bb410e201898ddd83e885c0c293a2  kcptun-darwin-386-20181114.tar.gz
1c55e926077c367da0f14afce9be1b9ce0222895  kcptun-windows-amd64-20181114.tar.gz
3731389ce20a8329653ca105a27c1665d2ea4e16  kcptun-windows-386-20181114.tar.gz
e9f843cb560e056681b9956fa0015fbcd93cb8e5  kcptun-freebsd-amd64-20181114.tar.gz
4ca036858cfca9280e76ab34c7dfc3e2fb86a5cf  kcptun-freebsd-386-20181114.tar.gz
035ba63263c5c6eb755be75b1fc20b85ede9f237  kcptun-linux-arm-20181114.tar.gz
070ee070b7437af4974af71885144271096bb828  kcptun-linux-mipsle-20181114.tar.gz
78a225ce4a3398cd4e6837db2a6576317bf31e7c  kcptun-linux-mips-20181114.tar.gz
kcptun - Improved multiplexing efficiency

Published by xtaci about 6 years ago

  1. Improved multiplexing efficiency.
  2. Move FEC processing outside of the lock.

https://github.com/xtaci/kcp-go/commit/90edee59b46c9e94e546816a6ed5dab1562326e3
https://github.com/xtaci/smux/commit/545ecee9d2a96ef4cf3c420c6b4095ac313fe870
https://github.com/xtaci/kcptun/commit/f430afcd9925735b4c4633736360b5871f44cf28

$ go version
go version go1.11 darwin/amd64

SHA1SUM

cc2c4843ef73da7ead09c1d5b77cae41448dd1bd  kcptun-linux-amd64-20181002.tar.gz
0f6b9c0aa35a9fbd09eca0c31e19a5983f53fd7c  kcptun-linux-386-20181002.tar.gz
0ca00beb8e12ecaa8788ce7ba55fac1e4a112169  kcptun-darwin-amd64-20181002.tar.gz
c094bec21f8fa62991d7207872b380330fc66e29  kcptun-darwin-386-20181002.tar.gz
02795f3f49f03cda290c92df58534482a86312d8  kcptun-windows-amd64-20181002.tar.gz
2fad56f47888f43444853dd88d87ddd2c84f8d64  kcptun-windows-386-20181002.tar.gz
7d871e9ef0d981d0bd1b1edc91dabfa1eae7658e  kcptun-freebsd-amd64-20181002.tar.gz
01269c091d7d7ddf21d3bc589fd9e2e5ef627af2  kcptun-freebsd-386-20181002.tar.gz
cbef760fa6ead0651d14f3c21cbad8ddacf79dd3  kcptun-linux-arm-20181002.tar.gz
2f55158e0fcb73edf0dabbab8861837d522efbb8  kcptun-linux-mipsle-20181002.tar.gz
70a776b65d059a94367311c1347a1f45dca0b4f6  kcptun-linux-mips-20181002.tar.gz